我制作了一个python脚本来读取文件并创建一个新的mongoDB集合。 当我在python中打印集合的一个文档时,集合如下:
{'_id': '5b5b0a55ca902423007413b9',
'employee': 'John Doe',
'schedule': [{'date': '08/11/2018', 'project': 'Drawing'},
...
{'date': '05/06/2018', 'project': 'Teaching'}
]
}
我使用以下代码在流星中进行了收集:
Planning = new Meteor.Collection("Planning");
计划也是我在python中给集合的名称。 现在,当我在Meteor(服务器端)中运行此代码时:
Meteor.methods({
getFullPlanning: function(){
var one = Planning.find({ employee: 'John Doe'});
console.log(one.employee);
}
});
这段代码记录的是未定义的,但是我的集合中有一个使用该名称的员工。我在流星上做错什么了?
但这确实可行:
Planning.find().count() // = 53 which is correct!
答案 0 :(得分:1)
根据Meteor docs:
find
返回一个游标。它不会立即访问数据库或返回文档。游标提供fetch
来返回所有匹配的文档,map
和forEach
来遍历所有匹配的文档,并且observe
和observeChanges
可以在以下情况下注册回调:匹配的文档更改。
您的变量one
是游标,而不是文档。如果仅查找单个文档,则可以调用Planning.findOne({ employee: 'John Doe' })
来返回单个文档,如果找不到匹配项,则调用undefined。您也可以致电Planning.find({ employee: 'John Doe' }).fetch()
。