node.js - 使用 Nodejs Sequelize 避免竞争条件

标签 node.js sequelize.js

我有一个代码可以更新特定帖子的查看次数。

我是这样做的:

models.Blog.findById(id).then(blog => {
    models.Blog.update({views: blog.views+1}, {where: {id: blog.id}}).then(blog => {
        //result
   })
})

但是,如果两个用户尝试同时更新该模型,则会出现竞争条件。

我的问题是如何做同样的事情并避免竞争条件。

最佳答案

而不是那样,请尝试以下方式:

models.Blog.update({ views: Sequelize.literal('views + 2') }, { where: { id: blog.id }}));

这将解决您的竞争条件。

更多信息: Do Read

关于node.js - 使用 Nodejs Sequelize 避免竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660205/

相关文章:

javascript - 如何使用 Sequelize 检索不属于多对多关联的所有记录

node.js - 如何在 Node js for payumoney 支付网关集成中创建哈希键?

javascript - 是否可以在 NodeJS 中模拟键盘/鼠标事件?

javascript - Express js 路由和 mysql 查询不起作用

node.js - 如何抛出我自己的不显示调用堆栈的错误?

node.js - Node Js Sequelize 按月选择查询

javascript - 如何计算表中的行数?

node.js - 来自 Sequelize 和 Node.js 的问题 console.log() 对象

html - 在html上更改led的颜色

node.js - 除了通过生成之外, Node 中是否有一种方法(某种 API)以编程方式调用本地 npm 发布