gpt4 book ai didi

node.js - 如何解决 Node.js 中的并发问题?

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

我有一个文章模型和一个评论模型。每篇文章最多可以有 10 条评论。

每当我添加评论时,都会在 Controller 中完成此检查。

Article.findOne({ id: 3 }, function(err, record){

if(record.commentCount < 10){

Comment.create({ /* parameters */ })

}

});

(代码没有被检查,但重要的是这里有两个查询)。

现在,由于 Node.js 在多台计算机上的多个线程中运行,这肯定会导致竞争条件。如果同时有100个请求,难免有些人会同时先获取计数,然后添加评论,因为他们都认为评论数少于10条。

我该如何解决这个问题?有没有办法锁定数据库或锁定一行? Ruby on Rails 允许我进行悲观锁定并完美解决这个问题。

最佳答案

如果你使用Sequelize作为ORM;也许你可以使用Transcation;

如:

sequelize.transcation({
isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE
}, function(t){
return Article.findOne({ id: 3, lock: t.LOCK.UPDATE }, function(err, record){
if(record.commentCount < 10){
Comment.create({ /* parameters */ })
}
});
})

Sequelize Doc

关于node.js - 如何解决 Node.js 中的并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915696/

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