У меня три базы данных, т. Е. Main_db - база данных нагрузки по умолчанию. Я хочу загрузить базу данных после входа в систему. База данных: -
main_db
→ user_collection
psm_2017_db
→ abc_collection
→ xyz_collection
psm_2018_db
→ abc_collection
→ xyz_collection
Вот моя структура проекта
вот мой сценарий входа.
client
|->login
|->login.js
Template.login.rendered = function(){
SessionStore.set("login_user",false);
};
Template.login.events({
'submit #formLogin': function (event, target){
event.preventDefault();
var email = target.find('#loginEmail').value;
var password = target.find('#loginPassword').value;
// console.log(email +" "+password);
Meteor.loginWithPassword(email, password, function(err){
if(err){
console.log(err);
alert("Invalid Login!");
}
else {
SessionStore.set("login_user",true);
console.log('successfully')
Router.go("/dashboard")
}
});
}
});
Template.layout.helpers({
"isLoggedin": function () {
return SessionStore.get("login_user");
}
});
вот мой файл сбора нагрузки
lib
|->collection.js
abcCollection=new Mongo.Collection("abc_collection");
xyzCollection=new Mongo.Collection("xyz_collection");
Вы можете подключиться к нескольким dbs, используя подход ниже.
var database = new MongoInternals.RemoteCollectionDriver("<<mongo url>>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });
<<mongo_url>>
- ваш стандартный URL-адрес mongodb. Например. mongodb://127.0.0.1:27017/database_name
Теперь в вашем конкретном сценарии main_db
содержит коллекцию пользователей (я полагаю, что это относится к коллекции метеоритов). Вы должны постоянно загружать его. Вы не можете загрузить его после входа в систему, поскольку информация пользователя - которая требуется для входа в систему, находится в этом db!
Как только вы позаботитесь об этом выше, подключение к остальным двум dbs можно сделать при входе в систему, как показано ниже:
/lib/dbconnection.js
(это будет распространено как на сервере, так и на клиенте)
Meteor.methods({
loadDB: function(){
if(Meteor.userId()){ // if a user has logged in
var database = new MongoInternals.RemoteCollectionDriver("<<mongo url>>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });
}
}
})
Meteor.call("loadDB");
loadDB
будет вызван каждый раз, когда пользователь войдет в систему. Но я боюсь, что он будет запускаться каждый раз, когда будет входить любой пользователь. Чтобы избежать повторной инициализации для каждого входа пользователя, вы можете проверить, работает ли database
или myCollection
уже существует.
mongodb://127.0.0.1:27017/<dbNameVar>