gpt4 book ai didi

javascript - 如何使用MongoClient而不需要每次都编码 "client.close()"?

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:25 25 4
gpt4 key购买 nike

我尝试打包数据库连接以提高可重用性。我想实现这样的目标:

const mongoPromise =MongoClient.connect(url,{ useNewUrlParser: true })
.then((client)=>{
const db = client.db(dbName);

// do something...

client.close();
})
.catch(err=>console.log(err));

因此,我可以将它用在其他地方:

//For example
//query
mongoPromise.then((db)=>db.collection('user').find().toArray())

//insert
mongoPromise.then((db)=>db.collection('test').insert({...}))

当查询或插入完成后,MongoClient将关闭


第一种方法,我可以通过混合回调和 promise 来找出解决方案。

将回调和 Promise 混合在一起不是很好吗?

// First method
const mongoPromiseCallback =(callback)=>MongoClient.connect(url,{ useNewUrlParser: true })
.then(async(client)=>{
const db = client.db(dbName);
await callback(db);
console.log("close the client");
client.close();
})
.catch(err=>console.log(err))

mongoPromiseCallback(db=>db.collection('user').find().toArray())
.then(res=>console.log(res)));


在另一种方法中,我尝试仅使用 promise ,但我不知道我可以在哪里关闭客户端

// the other method
const mongoPromise =MongoClient.connect(url,{ useNewUrlParser: true })
.then((client)=>{
const db = client.db(dbName);
return new Promise(function(resolve, reject) {
resolve(db);
});
})
.catch(err=>console.log(err));

mongoPromise.then(db=>db.collection('user').find().toArray())
.then(res=>console.log("res"));

最佳答案

您始终可以重用在 mongo 中创建的数据库对象。阅读本文,它将回答问题 How do I manage MongoDB connections in a Node.js web application?

关于javascript - 如何使用MongoClient而不需要每次都编码 "client.close()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com