javascript - 重用 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
应该缓存第一个要求吗?
解决方案
推荐阅读
- c# - 棱镜共享区域
- php - 用php从数据中删除字符
- php - 这个 pdf 数字签名是否正确?PHP/TCPPDF
- java - 将方法移动到另一个(静态)类时进行重构
- python - 查找前面没有其他字符串的字符串
- .htaccess - 尾随斜杠不适用于负载均衡器(AWS elb)
- angular - angular cli 6 无法在 style.scss 中加载外部 scss 文件?node_modules/raw-loader/node_modules/postcss-loader/lib??embedded
- laravel - groupadd:运行 docker-compose up 时出现无效的组 ID 'laradock' 错误
- ios - 我在 ipad 上的应用看起来更大
- android - 说话失败:TTS 引擎连接未完全建立