重用MongoDB连接的正确方法是什么?

时间:2019-07-18 05:43:56

标签: javascript node.js mongodb

我需要为我的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为undefinedapp.js中的第一个需求不是应该被缓存的吗?

0 个答案:

没有答案