收藏
回答

哪位大佬能告诉我一下,云开发数据库操作时,我先查后改会不会因为并发导致数据错乱?

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

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


回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2019-12-06

    会。请用原子操作。

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

     db.collection('group').where({

          memberOpenid: _.exists(false)

        }).update({

          data: {

            memberOpenid: OPENID

          }

        })


    2019-12-06
    赞同
    回复 3
    • 小白
      小白
      2019-12-06
      谢谢,目前场景暂时只限定一人,那如果是限定多人呢,比如最多限定4人一组,用什么方案?
      2019-12-06
      回复
    • 老张
      老张
      2019-12-06回复小白
      where({'member.3':_.exists(false)}.update({data:{member:_.addToSet(OPENID)}})
      2019-12-06
      回复
    • 小白
      小白
      2019-12-06回复老张
      感谢
      2019-12-06
      回复
登录 后发表内容
问题标签