我需要为我的Electron应用程序在多个不同的文件中重用MongoDB连接,但遇到一个我不了解的问题。这导致我创建了一个模块来处理此问题。
db.js
const MongoClient = require('mongodb').MongoClient;
require('dotenv').config();
let db;
function connect () {
return MongoClient.connect(`mongodb://${process.env.DB_HOST}?authSource=${process.env.DB_NAME}`, {
auth: {
user: process.env.DB_USER,
password: process.env.DB_PASS
},
useNewUrlParser: true
}).then(client => {
db = client.db(process.env.DB_NAME);
}).catch(error => {
console.error(error);
});
}
function getDB () {
return db;
}
module.exports = { connect, getDB };
我在我的主文件中需要此文件,这是它所需要的文件之一。
app.js
const mongoDB = require(path.resolve(`${__dirname}/assets/js/db`));
let db;
app.on('ready', async () => {
await mongoDB.connect();
db = mongoDB.getDB();
setTimeout(createWindow, 0);
});
这有效,我可以在createWindow
函数中使用它。几秒钟后,该应用程序将index.html
文件与index.js
文件一起加载并创建窗口。 index.js
是我需要在其中使用的另一个文件,因此我也需要在其中使用它。
index.js
const mongoDB = require(path.resolve(`${__dirname}/js/db`));
const db = mongoDB.getDB();
console.log(db);
这导致db为undefined
。 app.js
中的第一个需求不是应该被缓存的吗?