小程序
小游戏
企业微信
微信支付
扫描小程序码分享
云开发怎么将集合中某一个字段的值+1
如果先取出来加1再更新,多个人同时操作时会出现覆盖的情况
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
找到解决办法了
db.command.inc
更新指令。用于指示字段自增某个值,这是个原子操作,使用这个操作指令而不是先读数据、再加、再写回的好处是:
原子性:多个用户同时写,对数据库来说都是将字段加一,不会有后来者覆写前者的情况
减少一次网络请求:不需先读再写
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你得设置个锁标志,更新之前看这个锁标志是不是锁住了,如果锁了,说明有人在更新,就不能操作,更新完后将锁标志复位,别人就可以操作了。
这种操作也有问题,就是网络延时的问题,两个人同时去取锁标志,在极短的间隔时间内可能取到的都是未锁标志,就会出现你说的多人覆盖情况。
正常情况下小程序对同一字段允许多人操作的场景不多吧,通过权限控制来避免多人操作才是上策。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
找到解决办法了
db.command.inc
更新指令。用于指示字段自增某个值,这是个原子操作,使用这个操作指令而不是先读数据、再加、再写回的好处是:
原子性:多个用户同时写,对数据库来说都是将字段加一,不会有后来者覆写前者的情况
减少一次网络请求:不需先读再写
你得设置个锁标志,更新之前看这个锁标志是不是锁住了,如果锁了,说明有人在更新,就不能操作,更新完后将锁标志复位,别人就可以操作了。
这种操作也有问题,就是网络延时的问题,两个人同时去取锁标志,在极短的间隔时间内可能取到的都是未锁标志,就会出现你说的多人覆盖情况。
正常情况下小程序对同一字段允许多人操作的场景不多吧,通过权限控制来避免多人操作才是上策。