我在使用远程MongoDB和新Meteor1.3时遇到问题
var d = new MongoInternals.RemoteCollectionDriver("<mongo url>");
C = new Mongo.Collection("<collection name>", { _driver: d });
我把它像这样放在我的收藏文件夹里
if(Meteor.isServer){
var driver = new MongoInternals.RemoteCollectionDriver("mongodb://user:password@localhost:27017/customCollec");
}
C = new Mongo.Collection("customCollec", { _driver: driver });
但在客户端,这样的调用返回我:
C
未定义console.log("" + C.find().count());
所以我在collections.js中测试同一行:
if(Meteor.isServer){
var driver = new MongoInternals.RemoteCollectionDriver("mongodb://user:password@localhost:27017/customCollec");
C = new Mongo.Collection("customCollec", { _driver: driver });
console.log("" + C.find().count());
}
但结果是一样的:
C
没有定义另外,我的设置是自动发布和不安全的(dev staging)
提前谢谢你的线索。
最佳答案
好吧,我终于明白了(流星1.3,自动发布)!
在lib/collections.js中
var database;
if(Meteor.isServer){
console.log("On collections ");
database = new MongoInternals.RemoteCollectionDriver("mongodb://user:[email protected]:27017/db_name");
}
MyRemoteCollection = new Mongo.Collection('db_name', { _driver: database });
在这之后,我可以在客户端获取值
console.log("MyRemoteCollection count = " + MyRemoteCollection.find().count());
当然,它只在加载集合时工作。
“希望能有所帮助;)