将nodejs MongoDB连接代码移动到另一个文件中
将数据库连接代码移动到另一个nodejs文件,没有返回连接对象。
我可以在nodejs中将数据写入MongoDB。所有的数据库连接代码都写在一个.js文件中。
现在我尝试将数据库连接代码分隔到另一个.js文件,现在看来无法成功建立连接。
这里是1个.js文件中的工作代码:
const mongoDBIP = '192.168.1.71';
const mongoDBPort = 27017;
const mongo= require('mongodb').MongoClient;
const mongoURL = 'mongodb://<mongo admin>:<password>@'+`${mongoDBIP}`+':'+`${mongoDBPort}`;
...
mongo.connect(mongoURL, { useNewUrlParser: true, useUnifiedTopology: true }, (err, db) => {
if (err) {}
var dbo = db.db(<databaseName>);
var collection = dbo.collection('messages');
collection.insertOne(message, (err, result) => {
if (err) {}
})
...
现在我将其分为2个.js文件:
var _mongo = require('./mongodb.js');
var mongoDBO = _mongo.mongoDBO;
...
var dbo = mongoDBO('feathers');
console.log('DBO:' + dbo); <-- here, dbo is NULL
var collection = dbo.collection('messages');
collection.insertOne(message, (err, result) => {
if (err) {}
})
...
这里是mongodb.js的内容:
// mongodb.js
const mongoDBIP = '192.168.1.71';
const mongoDBPort = 27017;
const mongoClient = require('mongodb').MongoClient;
const mongoURL = 'mongodb://<mongo admin>:<password>@'+`${mongoDBIP}`+':'+`${mongoDBPort}`;
function mongoDBO(database) {
var dbo;
mongoClient.connect(mongoURL, { useNewUrlParser: true, useUnifiedTopology: true }, (err, dbase) => {
if (err) {}
dbo = dbase.db(database); <-- here, dbo is NULL
});
return dbo;
}
module.exports = Object.freeze({
mongoDBO
});
我希望mongodb.js中的对象“ dbo”不会为NULL,而是。这在nodejs v10.x和v12.x下都发生。
回答如下:我认为您需要调用connect函数。
var dbo = mongoDBO('feathers')();