NodeJs-导入的变量未定义

时间:2018-11-13 11:01:59

标签: node.js import module export

请考虑以下代码段,该代码段位于 A.js 文件中。

const connection = {};

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

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

我在 B.js 中执行const database = require('./A').mongo.connection;。 A和B js文件位于同一目录中。

为什么B文件中的数据库变量未定义?

3 个答案:

答案 0 :(得分:1)

这是因为connection['con'] = dbconnect函数回调的执行上下文中。如果您从外部访问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);
});

答案 1 :(得分:0)

如果连接成功,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.
   }
}

答案 2 :(得分:0)

这是一个回调函数:

(err, db) => {
    …
    connection['con'] = db;
}

可能会在读取 B.js中的database变量的代码后 执行。