如何将数据库名称作为变量

时间:2015-05-04 08:38:45

标签: mongodb meteor

我正在为使用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);

在这种情况下如何管理变量?

1 个答案:

答案 0 :(得分:0)

您必须根据dbNamecollectionName参数创建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"));
});