Mongo DB - 为什么我的Users.findOne未定义?

时间:2017-08-29 16:12:51

标签: javascript mongodb meteor

我正在研究Meteor,试图从Mongodb集合中找到一些值。 这是代码:



      var sameLogins = Users.findOne({login: 'a'});
      console.log(sameLogins);




但它已经回归并且未定义"。 但记录存在于集合中: enter image description here

那么,任何人都能说出我失踪的东西吗?

此外,在mongo控制台 - 一切正常: enter image description here

我正在寻找Publish / Subsribe的东西,但我还在使用autopublish模块。

谢谢!

2 个答案:

答案 0 :(得分:2)

对于遇到同样问题的新用户,我将为此问题留下答案。

如果您使用的是autopublish个套餐,那么您应该知道它会为每个集合发布.find()的结果。

但是,Meteor.users.find()是默认设置,只会返回_idprofile个字段,因此Meteor.users 客户集合中的文档会包含这两个领域只是。

最简单的解决方法是创建自己的出版物(例如allUsers)并在其中返回您需要的字段:

服务器

Meteor.publish('allUsers', () => {
  // check for Meteor.userId() is omitted, put it here, if needed
  return Meteor.users.find({}, { fields: { ... } });
});

别忘了订阅它:

<强>客户端:

Meteor.subscribe('allUsers');

答案 1 :(得分:0)

流星更新: 现在,您在变量sameLogins中存储cursor。要检索所需的结果,您必须通过调用fetch()来实际执行此查询。从没有fetch的findOne返回的内容本质上是一个可以用来迭代并找到mongoDB文档的对象 - (称为集合游标)。光标不是你自己的结果。

调用fetch会像:

Users.findOne({login: 'a'}).fetch()