10

Meteor.js と Mongo を操作する際に、find({一部の引数}) と場合によっては find({一部の引数}).fetch() を使用して、それぞれカーソルと一致するドキュメントの配列を返します。

両者の本当の違いは何ですか?(いつどちらを使用するのですか?)

これらのタイプの返されたオブジェクトを操作/反復する適切な方法は何ですか?

たとえば、タイトル フィールドを持つドキュメントが多数あるコレクションがあります。

私の目標は、[doc1title,doc2title,doc3title] など、すべてのタイトル フィールドの値の配列を取得することでした。

これは私がしました:

var i, listTitles, names, _i, _len;
names = Entries.find({}).fetch();
listTitles = [];
for (_i = 0, _len = names.length; _i < _len; _i++) {
    i = names[_i];
    listTitles.push(i.title);
}

またはcoffeescriptの同等のもの

names = Entries.find({}).fetch()
listTitles = []
for i in names
    listTitles.push(i.title)

これは機能しますが、それが適切な方法なのか、それとも半健全な方法なのかはわかりません。

4

2 に答える 2

11

js でカーソルを反復処理するには、cursor.forEachを使用します。

const cursor = Collection.find();
cursor.forEach(function(doc){
  console.log(doc._id);
});

カーソルを配列に変換する場合、.map()関数も便利です。

const names = Entries.find();
let listTitles = names.map(doc => { return doc.title });
于 2015-01-19T23:47:17.997 に答える