2012-08-16 3 views
0

큰 프로젝트에서 Mongodb 기본 드라이버를 구성하는 방법은 무엇입니까?Node.js 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); } 
    }); 
}; 

그러나 이것은 각각의 분리 된 모델의 데이터베이스 연결을 열 수있는 가장 좋은 방법은 무엇인가요? 모델 간의 올바른 연결 공유 방법 이것은 좋은 해결책이 될 것입니다 :

데이터베이스 connections.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. 
    }); 
    } 
}); 

답변

1

귀하의 이전 대답에 대한 대답은 question입니다. mongodb-native api는 사용하기가 까다롭고 힘들다고 말했습니다. 나는 왜 우리가 여기에서 볼 수 있다고 생각합니다.

사용 mongojs

users.js

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

    db.users.find({}, 

    function(err, results){ 

    //do something with the results 

    }) 

나는이 훨씬 간단하게 생각하고 더 큰 애플리케이션을 위해 매우 잘 작동합니다.

관련 문제