0

大きなプロジェクトで 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.
    });
  }
});
4

1 に答える 1

1

以前の質問に対する私の回答で、mongodbネイティブAPIは不格好で使いにくいと言いました。理由はここでわかると思います。

mongojsの使用

users.js

var db = require("mongojs").connect('maindb', ['users']);

    db.users.find({}, 

    function(err, results){

    //do something with the results

    })

これは非常に単純で、大規模なアプリケーションではるかにうまく機能すると思います。

于 2012-08-17T00:08:13.650 に答える