gpt4 book ai didi

javascript - promise 中的 promise

转载 作者:行者123 更新时间:2023-11-30 11:25:21 25 4
gpt4 key购买 nike

我正在尝试创建一个实用程序服务,以帮助我团队中的其他开发人员执行特定查询,但没有打开和关闭连接的麻烦。

这是我写的:

module.exports.connect = function(runner){
var connection;
return MongoClient.connect(url)
.then( conn => {
connection = conn;
var db = connection.db('looladb');
return db;
})
.then (db => runner(db))
.then (() => connection.close())
.catch(err => console.log('Error with mongo query', err));
}

这是使用模式:

mongoClient.connect(db => {
db
.collection("users")
.find({email: "shani@gmail.com"})
.toArray()
.then(out => console.log('db result', out))
})

这很好,但我希望使用模式是这样的 -

mongoClient.connect()
.then(db => {
db
.collection("users")
.find({email: "shani@gmail.com"})
.toArray()
.then(out => console.log('db result', out))
})

最佳答案

听起来很适合使用 finally .

module.exports.connect = async () => {
const connection = await MongoClient.connect(url);
return new Promise(res => res(connection.db('looladb')))
.catch(err => console.log('Error with mongo query', err))
.finally(connection.close)
}

注意 - 正如所指出的,finally在 Node 上尚未得到正式支持,但可以通过 --harmony-promise-finally 启用旗帜。或者,您可以使用其他软件包提供支持,例如promise.prototype.finallyBluebird

关于javascript - promise 中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260951/

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