我正在为使用Meteor和MongoDB的员工创建一个应用程序。此应用程序将由多个组织使用。所以我将为每个组织创建一个单独的数据库。我在Meteor中遇到了一个关于如何将数据库名称和集合名称保持为变量的问题。数据库名称将在登录时决定。然后我将DB名称保留在Session
集合名称也可以是变量。
例如:
var dbName = Session.get("dbName"); //for eg dbName="redex"
var collectionName = Session.get("collectionName"); // for ex collectionName="employees"
Employees = new Mongo.Collection(collectionName);
在这种情况下如何管理变量?
答案 0 :(得分:0)
您必须根据dbName
和collectionName
参数创建server method creates a given database:
'newDatabase': function (dbName, collectionName) {
var d = new MongoInternals.RemoteCollectionDriver(process.env.MONGO_URL.replace("originDB", dbName));
Employees = new Mongo.Collection(collectionName, { _driver: d });
}
您还必须在客户端声明新的集合:
Meteor.call('newDatabase', Session.get("dbName"), Session.get("collectionName"), function (err, res) {
if (!err)
Employees = new Mongo.Collection(Session.get("collectionName"));
});