【问题标题】:MeteorJS does not connect with the MongoDBMeteorJS 不与 MongoDB 连接
【发布时间】:2014-04-06 00:27:05
【问题描述】:

我是 MeteorJS 的新手,所以这个问题可能很愚蠢,但无论如何。 我已经尝试过几次关于使用meteorJS构建初学者应用程序的教程,甚至是meteor.com首页提供的教程。 但是这行代码

Something = new Meteor.Collection("something");

到 a) 我的流星应用程序运行但没有从这个 mongodb 集合中找到(并返回)任何数据和 b) 当我输入流星应用程序目录 "meteor mongo" 并尝试手动插入一些时,它似乎不起作用数据到这个集合中,它会返回一个未定义的集合错误。

我只是使用 curl https://install.meteor.com/ | sh 安装了 MeteorJS,据我所知,它还安装了一个 meteor-mongodb 版本。

经过数小时的谷歌搜索,我可以承认显然我做错了什么,但我不知道是什么! 任何建议/帮助将不胜感激!

提前谢谢你!

【问题讨论】:

  • 你只给出了一小段代码。应该有发布/订阅(如果删除了自动发布)、模板、事件处理程序(插入调用)代码 sn-ps。您也尝试过从浏览器插入,如果是,您是如何尝试的?
  • 我的代码是meteor.com在首页示例中给出的代码:pastebin.com/n3aWP7p0。另外,我没有尝试从浏览器中插入任何内容。
  • 您可以尝试从浏览器控制台执行Something.insert({foo: "bar"}) 然后Something.find().fetch() 吗?
  • 是的!现在它起作用了!我告诉过你,这是一个愚蠢的问题:/非常感谢!但是,如果您知道,请向我解释为什么使用 meteor-mongo shell 不起作用?
  • 没问题,我创建了答案来总结一切。如果有什么需要进一步解释的,请告诉我。

标签: node.js mongodb meteor


【解决方案1】:

meteor 主页上的简单示例使用两个名为 autopublish 和 insecure 的默认包,它们允许您快速模拟为您在幕后设置发布/订阅模式并假设访问者是可信的应用程序。

话虽如此,只要您使用以下方式设置您的收藏:

CollectionNameMeteor = new Meteor.Collection("collection-name-mongo");

Meteor 实现了 http://docs.meteor.com/#meteor_collection,这是您的集合的 mongodb 兼容表示,但语法有点不同。

虽然使用 mongodb 的语法 db.collection-name-mongo.find() 直接查询 mongodb 会返回一个文档,但流星的集合 api 使用稍微不同的语法 CollectionNameMeteor.find() 并返回一个游标,如此处所述 http://docs.meteor.com/#meteor_collection_cursor 并从该游标中检索文档,您需要CollectionNameMeteor.find().fetch() 以数组形式获取结果。

但是你通常会在你的流星代码上使用光标引用,因为大多数流星的魔法都依赖于此。

同样,在 mongodb shell 上进行插入

db.collection-name-mongo.insert({foo: "bar"})

而在流星上,你会这样做

CollectionNameMeteor.insert({foo: "bar"})

其中还有一个有用的回调http://docs.meteor.com/#insert

【讨论】:

    猜你喜欢
    • 2023-02-14
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多