使用Nodejs Sequelize避免竞争条件

时间:2018-08-02 18:37:08

标签: node.js sequelize.js

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

我是这样做的:

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

但是,如果两个用户尝试一次更新该模型,那么就会出现竞争状况。

我的问题是如何做同样的事情并避免种族状况。

1 个答案:

答案 0 :(得分:1)

相反,请尝试以下方法:

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

这将解决您的比赛条件。

更多信息: Do Read

相关问题