javascript - mongo 客户端:如何在单独的文件中重用客户端?
问题描述
这是 db.js 文件
const client = new MongoClient(DATABASE, mongodbOptions);
const connectWithMongoDb = () => {
client.connect((err) => {
if (err) {
throw err;
} else {
console.log('db connected');
}
});
};
module.exports = { client, connectWithMongoDb };
我从我的 server.js 中调用了 connectWithMongoDb 函数。db 连接成功。但问题是我不能重用client
. 例如,我想为集合创建一个单独的目录。(为了得到一个我需要client
对象的集合)
所以,这是我的 collection.js 文件
const { client } = require('../helpers/db-helper/db');
exports.collection = client.db('organicdb').collection('products');
但是一旦调用此文件(collection.js),问题就会出现。
我收到此错误:
throw new MongoError('MongoClient must be connected before calling MongoClient.prototype.db'
解决方案
您必须在连接到 MongoDB 后获得连接,您可以在任何地方使用它。
阅读 - https://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html
let client;
async function connect() {
if (!client) {
client = await MongoClient.connect(DATABASE, mongodbOptions)
.catch(err => { console.log(err); });
}
return client;
}
conet getConectedClient = () => client;
const testConnection = connect()
.then((connection) => console.log(connection)); // call the function like this
module.exports = { connect, getConectedClient };
推荐阅读
- xaml - UWP 有没有办法在将页面加载到框架时为 StackPanel 的位置和大小设置动画?
- swift - 在 MTKView 中绘制文本
- react-native - headerShown、headerTitle 和其他选项在屏幕上不起作用
- python - 如果我不在循环中使用它们,为什么我的数组会改变它们的值?
- r - 向ggplot直方图添加散点图
- python - pip install twilio 的问题
- android - 尝试在空对象引用上调用接口方法“java.lang.Object[] java.util.Collection.toArray()”(仅在发布时)
- ember.js - Ember Octane 如何在组件中访问模型数据
- oracle - 连接到正在运行的 JavaWebStart、Oracle Forms 12c 应用程序 [性能测试]
- flutter - 颤动文本,防止有空格时自动换行