关于小程序云开发:小程序云开发解决并发下数据不一致问题

常见于抢购、人数限度等场景。

1. 利用原子操作符

借助原子操作符,能够实现。原子操作符包含:

  • inc
  • mul
  • addToSet

例:

const _ = db.command;

let res = await db.collection('my_collection').where({
    _id: id,
    limit: _.lt(10)
}).update({
    data: {
        limit: _.inc(1)
    }
})

通过应用原子操作符inc,防止并发写的影响。

小程序云开发文档是这样形容的:

用 inc 指令而不是取出值、加 10 再写进去的益处在于这个写操作是个原子操作,不会受到并发写的影响,比方同时有两名用户 A 和 B 取了同一个字段值,而后别离加上 10 和 20 再写进数据库,那么这个字段最终后果会是加了 20 而不是 30。如果应用 inc 指令则不会有这个问题。
(https://developers.weixin.qq….)

2. 利用事务

间接参考小程序云开发文档就好。
须要留神的是,事务中不反对批量操作,仅反对单记录操作。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理