gpt4 book ai didi

javascript - 如何进行数据完整性和错误处理?

转载 作者:行者123 更新时间:2023-11-30 22:02:12 24 4
gpt4 key购买 nike

也许这是一个愚蠢的问题,但在我问了一些 friend 并谷歌了一段时间之后,仍然没有找到一个好的解释。

比如我会在一个用户发帖时做如下操作:

  1. MySQL.insert(用户, postTitle, postBody, 时间)
  2. Redis.incr user.totalPostCount
  3. Redis.set last10Posts

所以我的问题是,例如,如果 1 成功但 2 失败,我该怎么办?

忽略redis报错继续?那么 user.totalPostCount 是不正确的。

重试redis.incr?重试失败怎么办?

向最终用户返回错误说发布失败并让用户再次发布?

删除先前插入的帖子并将错误返回给用户?

mysql.insert({user: user, postTitle: postTitle, postBody: postBody}, function(err, mysqlId) {
if(err) { return Error(500); }
redis.incr({user: user, totalPostCount}, function(err, result) {
if(err) { mysql.delete(mysqlId)}
setLast10Post({newPost: {postTitle...}}, function(err, result) {
if(err) {mysql.delete(mysqlId); redis.decr({user.totalPostcount})}
})
})

})

最佳答案

您可能希望这 3 个操作成为单个原子操作。也就是说,如果任何步骤失败,您要确保整个过程都失败并且什么也不会发生。

因此对于场景 1(1 次成功,2 次失败),您将回滚 SQL 查询并报告错误。您可能会忘记当时发生的任何事情或重试整个过程。

至于实际创建这个交易,也许这个 link很有帮助。

关于javascript - 如何进行数据完整性和错误处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43037010/

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