node.js - 返回结果时Sequelize操作挂起但不返回时工作

标签 node.js promise sequelize.js

我已经使用 Node 大约 3 年了,但是现在发生在我身上的事情让我发疯。
我的项目在过去 6 个月中使用了 Sequelize,并且一切正常。
如果我尝试使用以下代码更新 myModelObject 实例,它会按预期工作。(为了以更清晰的方式显示行为,我更改了实际代码)

...
.then(parameters => {                                    
   myModelObject.update({parameters}, { where: { id: myObjectId }})
   .then(() => {
      console.log("Sequelize update resolved !")      
   })
})
.then( () => {
   console.log("Promise resolved !")
})
这将使我的 myModelObject 在数据库中更新,控制台将显示:

Promise resolved !


1秒后...

Sequelize update resolved !


但是 ,当我在更新 myModelObject 之前添加 返回 时会发生奇怪的行为:
...
.then(parameters => {                                    
   return myModelObject.update({parameters}, { where: { id: myObjectId }})
   .then(() => {
      console.log("Sequelize update resolved !")
   })
})
.then( () => {
   console.log("Promise resolved !")
})
这使我的代码挂起......更新永远不会完成并且超时发生。我的意思是,如果我想退货,Sequelize 更新永远不会解决!
我所有的其他 Sequelize 代码都运行良好!
任何人都会非常感激:)
Node :12.16.0 || Sequelize :5.21.6 ||页:7.18.2

最佳答案

如果有人感兴趣,我发现了问题!
在调用此方法之前,在代码的另一部分中,正在使用 Sequelize 事务来更新同一对象,但该事务尚未提交。
显然这会导致我的更新挂起。
为了解决这个问题,我还将此事务传递给了我的 Update 调用。另一种修复它的方法是在调用我的更新之前结束事务。

关于node.js - 返回结果时Sequelize操作挂起但不返回时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63122018/

相关文章:

sql - nodejs mssql - 传递的参数太多存储过程

node.js - 如何使用 Amazon EC2 实例设置用于生产的 node.js process.env 变量?

javascript - 递归 promise 链末尾的链式操作

node.js - nodejs sequelize/cli 如何与 Node 配置一起使用

javascript - Sequelize - 简单更新不起作用

node.js - 为什么我使用 Sequelize 有两倍的外键

node.js - Sequelize 类型错误 : Cannot read property 'push' of undefined

javascript - 使用 contextify 从 Node vm 内部返回异步结果

javascript - 需要帮助弄清楚如何编写带有条件的 Promise

react-native - 如何在 Fetch 的 promise 链之外获取响应数据?