Как получить доступ к БД mongo в узле с помощью клиента Mongo вне обратного вызова

#node.js #mongodb

#node.js #mongodb

Вопрос:

Я рассматривал эти примеры:

http://mongodb.github.io/node-mongodb-native/2.2/api/

Но я довольно смущен тем, как получить доступ к БД вне обратного вызова. MongoClient.connect, похоже, ничего не возвращает, и я попытался объявить переменную вне вызова connect, а затем изменить ее при обратном вызове, но это тоже не работает. Что я должен делать вместо этого?

Ответ №1:

Внутри обратного вызова connect объявите глобальный, просто не используя ключевое слово «var».

Примечание: поскольку javascript является асинхронным, нет гарантии, что обратный вызов выполняется до того, как вы используете переменные вне него. Обычно работает использование тайм-аута.

Пример файла узла:

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

MongoClient.connect('mongodb://localhost:27017/test',connectCallback);
function connectCallback(err, db) {
  col = db.collection('persons');
  console.log('Connected to mongodb');
  }
setTimeout(function() {
col.save( {task:"Access db outside callback",result: "Success"}, (err, result) => {
        if (err) 
            return console.log(err)
        console.log(result)
        })
},1000)
 

Вывод оболочки Mongo:

введите описание изображения здесь