使用Nodejs Sequelize避免竞争条件



我有一个代码可以更新特定帖子的浏览量。

我是这样做的:

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 }}));

这将解决您的种族状况。

更多信息:阅读

最新更新