我在使用远程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());

当然,它只在加载集合时工作。
“希望能有所帮助;)

09-19 19:19