大きなプロジェクトで Mongodb ネイティブ ドライバーを編成するにはどうすればよいですか?
現時点では、基本的にモジュール内の単なるオブジェクトであるすべての「モデル」でこのコードを使用しています。
users.js
var mongo = require('mongodb');
var Users = {};
Users.db = new mongo.Db(...);
Users.db.open = function(e, c){
if(e){ throw new Error(e); } else {
console.log('connection opened'); }
};
Users.c = Users.db.collection('users');
Users.login = function(username, rawPassword, callback){
Users.c.findOne({ username: username }, function(e, o){
if(o.password === encrypt(rawPassword)){ callback(o); }
else { callback(null); }
});
};
しかし、分離された各モデルでデータベース接続を開くには、これが最善の方法でしょうか? モデル間の接続を適切に共有するにはどうすればよいですか? これは良い解決策でしょうか:
データベース接続.js
var mongo = require('mongodb');
var RedisClient = require('redis-client');
module.exports = {
main: new mongo.Db(...),
log: new mongo.Db(...),
cache: new RedisClient(...)
};
したがって、データベース接続を使用するたびに、代わりにこれを使用できます。
users.js
var mainDb = require('database-connections.js').main;
var logDb = require('database-connections.js').log;
var cacheDb = require('database-connections.js').cache;
mainDb.open(function(e, c)){
if(e){ throw new Error(e); } else {
mainDb.collection('users', function(e, c){
// do work.
});
}
});