首页 > 解决方案 > 重用 MongoDB 连接的正确方法是什么?

问题描述

我需要在我的 Electron 应用程序的多个不同文件中重用 MongoDB 连接,但遇到了一个我不明白的问题。这导致我创建了一个模块来处理这个问题。

数据库.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 };

我他们在我的主文件中需要这个,这是需要它的文件之一。

应用程序.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应该缓存第一个要求吗?

标签: javascriptnode.jsmongodb

解决方案


推荐阅读