fun*_*eah 9 javascript mongodb coffeescript meteor
在使用Meteor.js和Mongo时,我使用find({ some arguments }),有时会找到({ some arguments }).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);
}
Run Code Online (Sandbox Code Playgroud)
或等同于coffeescript
names = Entries.find({}).fetch()
listTitles = []
for i in names
listTitles.push(i.title)
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我不知道它是正确的方式,甚至是半合理的方式.
Dav*_*don 14
你之前已经问过你的第一个问题- 也看到这篇文章.简短的回答是你想要使用返回的光标,find除非你真的需要所有的数据,以便在将它发送到模板之前对其进行操作.
您的CoffeeScript可以重写为:
titles = (entry.title for entry in Entries.find().fetch())
Run Code Online (Sandbox Code Playgroud)
如果您使用下划线,它也可以写成:
titles = _.pluck Entries.find().fetch(), 'title'
Run Code Online (Sandbox Code Playgroud)
Mic*_*oyd 10
要在js中迭代游标,只需使用cursor.forEach
const cursor = Collection.find();
cursor.forEach(function(doc){
console.log(doc._id);
});
Run Code Online (Sandbox Code Playgroud)
将游标转换为数组时,您还会发现.map()函数很有用:
const names = Entries.find();
let listTitles = names.map(doc => { return doc.title });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14610 次 |
| 最近记录: |