MeteorJS不与MongoDB连接

时间:2014-03-04 12:51:59

标签: node.js mongodb meteor

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

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

似乎没有工作时间a)我的流星应用程序运行但发现(并返回)没有来自此mongodb集合的数据和b)当我输入meteor应用程序目录"meteor mongo"并尝试手动将一些数据插入此集合中,它会返回一个未定义的集合错误。

我刚刚使用curl https://install.meteor.com/ | sh安装了MeteorJS,据我所知安装了meteor-mongodb版本。

经过几个小时的谷歌搜索,我可以承认,显然我做错了什么,但我找不到什么! 任何建议/帮助将非常感谢!

提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

虽然使用mongodb的语法db.collection-name-mongo.find()对mongodb进行直接查询会返回文档,但meteor的集合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