我正在尝试为基于Express的节点js应用程序编写mongodb连接设置的最有效方法。
我制作了一个负责建立连接的类,如下所示:
class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});
return resultSet
}
};
export default new queryToDB();
每个查询之后,我将关闭与MongoClient
的连接。建议这样做吗?
第二,我将连接作为queryHandler
传递给回调。 queryHandler
函数看起来像这样:
export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};
我将结果传递回处理程序,该处理程序又从服务器传递回客户端。这是建立联系和处理结果的有效方法吗?到目前为止,我尚未对此进行任何负载测试,但想确定这种处理查询和结果到mongodb的方法是否存在任何问题。我也知道我正在使用几个回调来实现这一点,这就是为什么我想更多地了解这种方法的性能。我不想使用Mongoose
进行这项工作。我正在寻找仅使用MongoClient
来实现。
任何形式的反馈意见表示赞赏。谢谢。