2016-11-12 2 views
0

Im java-программист, который только что запустил javascript.Структурирование кода базы данных в NodeJS

Я создал базу данных mongo на mlabs, и теперь я написал код для подключения к базе данных.

Как код базы данных структурирован в узле, есть ли способ подключиться к db неблокирующим способом?

+0

Я нашел это сообщение, которое может помочь .. [http://stackoverflow.com/questions/22160709/non-blocking-mongodb-nodejs](http://stackoverflow.com/questions/22160709/non-blocking- mongodb-nodejs) – illcrx

+0

Документация водителя по адресу http://mongodb.github.io/node-mongodb-native/2.2/ является хорошим показанием. Кажется, код можно структурировать, используя либо обратные вызовы, либо обещания ES6 (которые поддерживаются в Node). – traktor53

ответ

0

Mongodb's official driver подключается к дБ асинхронно с обратным вызовом.

из README:

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

// Connection URL 
var url = 'mongodb://localhost:27017/myproject'; 
// Use connect method to connect to the Server 
MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    console.log("Connected correctly to server"); 

    db.close(); 
}); 

Допустим, вы хотели отправить результаты находке() как ответ в формате JSON, вы бы:

  • Подключение к БД.
  • внутри обратного вызова connect вызовите db.collection.find()
  • внутри обратного вызова find(), передайте результаты обработчику отправки ответа. (res объект в экспресс get()).

Таким образом, шаблон: вложение обратных вызовов и завершение вызовом объекта ответа/контроллера MVC/что-то подобное.

+0

Так ли больно писать MongoClient.connect каждый раз, когда я хочу сделать операцию с базой данных? –

+0

, если вы хотите, чтобы соединение открыто, вы можете использовать объект db из обратного вызова connect в другом месте. –

+0

Он останется доступным, пока вы не закроете его с помощью db.close() –

Смежные вопросы