流星将MongoDB集合与已存在的对象数组一起使用

时间:2018-07-27 12:27:29

标签: mongodb meteor

我制作了一个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!

1 个答案:

答案 0 :(得分:1)

根据Meteor docs

  

find返回一个游标。它不会立即访问数据库或返回文档。游标提供fetch来返回所有匹配的文档,mapforEach来遍历所有匹配的文档,并且observeobserveChanges可以在以下情况下注册回调:匹配的文档更改。

您的变量one是游标,而不是文档。如果仅查找单个文档,则可以调用Planning.findOne({ employee: 'John Doe' })来返回单个文档,如果找不到匹配项,则调用undefined。您也可以致电Planning.find({ employee: 'John Doe' }).fetch()