【问题标题】:return undefined Posts.findOne();返回未定义的 Posts.findOne();
【发布时间】:2015-12-10 15:45:09
【问题描述】:

我是 Meteor 的新手,所以我正在关注 Discover Meteor Book。但是我发现了一些麻烦。当它说:在两个新窗口中打开浏览器控制台(第 4 章集合):

  • 首先,它不能让我同时打开 2 个窗口。它只部署了一个控制台窗口(它似乎属于整个浏览器系统。)
  • 其次,好的,我只使用一个浏览器控制台窗口。但是,当我尝试运行 Posts.findOne();它应该部署 {title: "一个新帖子", _id: LocalCollection._ObjectID};但它部署了“未定义”。实际上我不明白,因为我有这个:Posts = new Mongo.Collection('posts'); (文件名:posts.js)在 lib 文件夹下(应该在双方(客户端和服务器)都可以使用。

关于为什么是未定义的任何想法?

【问题讨论】:

  • 听起来像是发布/订阅问题,你读到本书的这一章了吗?
  • 您需要发布您的代码。您的帖子收藏似乎是空的。关于前一个问题,这是关于您的浏览器的问题。您使用哪种浏览器?在大多数浏览器中,您可以为每个选项卡/窗口设置一个控制台。
  • @ChristianFritz 好的,我为每个窗口(mozilla firefox)提供了一个浏览器控制台。我的代码是我在第一个问题中写的那个(或者 yoy 是什么意思?。我用这个 cmd 插入了一个对象:db.posts.insert({title: "A new post"}); 在 Mongodb shell 中它显示此对象但不在浏览器控制台中。此外,我在运行此 cmd 的浏览器控制台中插入了第二个对象: Posts.insert({title: "A second post"}); 但是当我运行此对象时: Posts.find() .count(); 当它必须是 2 时它的结果是 0。在 mongoDB 控制台/shell 中它应该是好的。
  • 我还没到这一章。 @saimeunt 。但我正在关注这本书,它应该部署:{ "_id": ObjectId(".."), "title" : "A new post"};但它部署未定义
  • Javiss,你能检查一下你是否还有一个名为 autopublish 的包吗?在终端中输入流星列表

标签: javascript mongodb meteor collections


【解决方案1】:

就像insecure 一样,所有新的 Meteor 应用程序都是使用 autopublish 包创建的。
如果您 meteor remove autopublish 您需要发布您的收藏内容并订阅它。如果您还没有这样做,您将看不到任何记录,因为客户端不会从服务器中提取数据,这为 Meteor 增加了安全措施。

解决方法:meteor add autopublish 然后检查浏览器控制台是否有已发布的记录。

【讨论】:

  • @Kyll,对此感到抱歉。我在上面的 cmets 中回答了这个问题,并添加了答案,所以它不是没有答案的。我无法再删除答案,因为它是已接受的答案并帮助了用户。
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 2016-11-18
  • 2013-08-30
  • 2017-10-24
  • 2021-09-22
  • 2019-12-24
  • 2016-05-15
  • 2017-03-11
相关资源
最近更新 更多