2013-07-17 3 views
0

Я хочу создать модуль для NodeJS для подключения к MongoDB. Я видел, что новый, лучший подход - использовать MongoClient, но я не могу понять, как я могу выполнять параллельные операции с базой данных. Цель Я хочу добиться того, чтобы иметь функции абстрагировать базы данных, как показано на следующем:Множество соединений MongoClient с использованием Node.js

exports.insertItem(item){ 

    //Whatever 

} 

Согласно документации, я должен подключиться к базе данных таким образом:

MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, db) { 

    //Do stuff on the db object 

}); 

проблема заключается в том, как я должен повторно использовать объект db, если он не в области, которую я могу использовать для экспорта функций в узел? Должен ли я сделать MongoClient.connect() для каждой функции, связанной с БД?

+1

возможно дубликат [Как повторно использовать соединение MongoDB в Node.js] (http://stackoverflow.com/questions/17647779/how-to-reuse-mongodb -связность-в-узле-JS) – moka

ответ

0

Вы делаете одно подключение к БД и использовать его везде

Типичная картина для модулей

export.myinsert = function(db) { 
    return function(whatever) { 
    } 
} 

, а затем сделать

require('mymodule')(db) 

Посмотрите на пример

https://github.com/christkv/tic-tac-toe-steps

0

Вот урезанная версия некоторого кода, который я использую, чтобы показать общую концепцию ... Надеюсь, это поможет вам начать работу.

var mongodb = require('mongodb'), 
    MongoClient = mongodb.MongoClient; 

var db; 

// Initialize our connection to MongoDB once 
MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, database){ 
    if(err){ 
     console.log('MongoClient connect failed'); 
     console.log(err); 
    } 

    db = database; 
}); 

exports.Connect = function (callback) { 
    callback(db); 
}; 

exports.MongoClient = MongoClient; 
exports.ObjectID = mongodb.ObjectID; 

Чтобы использовать его

var Connect = require('myMongo').Connect; 
Connect(function(db){ 
    // then use your db.collection() stuff here 
}) 
Смежные вопросы