Вы скрываете переменную db
с параметром обратного вызова.
Попробуйте вместо этого.
// Open a connection
db.open(function (err, p_db) {
db.close();
});
// Open another connection
db.open(function (err, p_db) {
db.close();
});
Обновление: Ладно, наверное, я запутался в параметрах обратного вызова, извините.
Ваша проблема (из сущности) заключается в том, что вы выполняете два db.opens с одним и тем же объектом db, прежде чем закрывать их. Кроме того, похоже, что вам нужны отдельные объекты сервера, если вы не делаете вещи в последовательности.
Итак, вы могли бы вместо этого, если вы хотите гарантировать это в последовательности, (также, у меня, похоже, не определена версия mongodb, поэтому я изменил ее на подключенную): 1011 *
console.log('[1]', db.serverConfig.connected);
db.open(function (err, db) {
console.log('[2]', err, db.serverConfig.connected);
db.close();
console.log('[3]', err, db.serverConfig.connected);
console.log('[4]', db.serverConfig.connected);
db.open(function (err, db) {
console.log('[5]', err, db.serverConfig.connected);
db.close();
console.log('[6]', err, db.serverConfig.connected);
});
});
Какие отпечатки:
[1] false
[2] null true
[3] null false
[4] false
[5] null true
[6] null false
В качестве альтернативы, вы можете определить две переменные в БД, но вам также нужно определить две серверные переменные, или они зависают после закрытия первой. Вот так:
var mongodb = require('mongodb')
, server = new mongodb.Server('localhost', 27017, {})
, server2 = new mongodb.Server('localhost', 27017, {})
, db = new mongodb.Db('test', server, {})
, db2 = new mongodb.Db('test', server2, {})
;
console.log('[1]', db.serverConfig.connected);
db.open(function (err, db) {
console.log('[2]', err, db.serverConfig.connected);
db.close();
console.log('[3]', err, db.serverConfig.connected);
});
console.log('[4]', db2.serverConfig.connected);
db2.open(function (err, db2) {
console.log('[5]', err, db2.serverConfig.connected);
db2.close();
console.log('[6]', err, db2.serverConfig.connected);
});
Какие отпечатки (для меня, и я думаю, вы не можете рассчитывать на порядок 1,4,2,3 ...):
[1] false
[4] false
[2] null true
[3] null false
[5] null true
[6] null false