Как взять имя базы данных как переменную

69
11

Я создаю приложение для сотрудников, использующих Meteor и MongoDB. Это приложение будет использоваться несколькими организациями. Поэтому я создам отдельную БД для каждой организации. Я столкнулся с проблемой в Meteor о том, как сохранить имя базы данных и имя коллекции как переменную. Имя базы данных будет определено при входе в систему. Затем я буду хранить имя БД в Session.
Имя коллекции также может быть переменной.

Например:

var dbName = Session.get("dbName"); //for eg dbName="redex"
var collectionName = Session.get("collectionName"); // for ex collectionName="employees"
Employees = new Mongo.Collection(collectionName);

Как управлять переменными в этом случае?

спросил(а) 2015-05-04T11:38:00+03:00 5 лет, 2 месяца назад
1
Решение
77

Вам нужно будет создать метод сервера, который создает заданную базу данных в соответствии с параметрами dbName и collectionName:

'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"));
});

ответил(а) 2015-05-04T12:29:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема