gpt4 book ai didi

javascript - 如何在 NodeJS 中处理嵌套的 Promise

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

我对 Promise 比较陌生,所以我希望你能帮助我。我有以下代码:

bcrypt.genSalt(10)
.then((salt) =>{
return bcrypt.hash(newUser.password, salt)
})
.then((hash)=>{
newUser.password = hash;
return mariaDB.pool.getConnection()
})
.then((conn)=>{
conn.beginTransaction()
.then() //here I'm doing some database request
.catch((err)=>{
console.log(err)
return conn.rollback() //where is this Promise handled?
})
})
.catch((err)=>{
res.json({error: err})
})

我收到一个 newUser 对象,我首先将其传递给 bcrypt 来加密我的密码。然后我需要对我的 MariaDB 数据库进行事务处理。但这种“嵌套的 Promise”正确吗?有更好的解决方案吗? promise “return conn.rollback”在哪里处理?

问候和感谢!

最佳答案

像这样简单地做:

bcrypt.genSalt(10)
.then(salt => bcrypt.hash(newUser.password, salt))
.then(hash => {
newUser.password = hash;
return mariaDB.pool.getConnection()
})
.then(conn => {
return conn.beginTransaction()
.then(() => {
// here I'm doing some database request
})
.catch( err => {
conn.rollback();
throw new Error(err); // this error will be cathed on bottom catch
});
})
.catch(err => res.json({error: err}))

关于javascript - 如何在 NodeJS 中处理嵌套的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53299512/

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