NodeJs - импортированная переменная не определена - PullRequest
0 голосов
/ 13 ноября 2018

Рассмотрим приведенный ниже фрагмент кода, который находится в файле A.js .

const connection = {};

mongo_cli.connect(url, (err, db) => {
    ...
    connection['con'] = db;
});

module.exports = {
    mongo:{
        connection: connection['con'];
    }
}

Я делаю это const database = require('./A').mongo.connection; в B.js .Файлы A и B js находятся в одном каталоге.

Почему переменная базы данных в файле B не определена?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

U не будет неопределенным, если соединение установлено успешно.так что для обработки этого, вы можете попробовать что-то вроде этого.

const connection = {};
connection['con'] = null;
mongo_cli.connect(url, (err, db) => {
   ...

   connection['con'] = db;
});

module.exports = {
   mongo:{
       connection: connection['con']; // if connection failed then connection['con'] will be null.
   }
}
0 голосов
/ 13 ноября 2018

Это потому, что connection['con'] = db находится в контексте выполнения обратного вызова функции connect.Если вы получите доступ к connection['con'] извне, вы, вероятно, получите неопределенное значение.Я предлагаю вам использовать Mongoose для таких реализаций.Вот простой пример:

const mongoose = require('mongoose');
const url = "your_mongodb_url";
const connect = mongoose.connect(url, {
  useNewUrlParser: true
});
connect.then((db) => {
    console.log('Database Connected');
}, (err) => {
   console.log(err);
});
...