哪位大佬能告诉我一下,云开发数据库操作时,我先查后改会不会因为并发导致数据错乱?
发布于 7 年前 作者 wzeng 8884 次浏览 来自 问答

比如我使用where先查询组,如果组成员是0,就往里面添加成员,确保每个组成员只有一个人,但是会不会有可能发生并发,在我先查找到空组后,另外一个用户同时操作,push进去了,等我再执行update的时候,实际变成了这个组已经有一个成员,加上我push的,最终这个组会有两个成员,这种情况会不会发生呢?怎么解决?

    db.collection('group').where({
      member: _.size(0)
    }).update({
      data: {
        member: _.push([OPENID])
      }
    })
1 回复

会。请用原子操作。

另外,限定最多只一个人为什么要用数组?用一个字段不行吗?member改成memberOpenid?

 db.collection(‘group’).where({

      memberOpenid: _.exists(false)

    }).update({

      data: {

        memberOpenid: OPENID

      }

    })

回到顶部