常见于抢购、人数限制等场景。
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
,避免并发写的影响。
小程序云开发文档是这样描述的:
2. 利用事务
如果需要一次操作多个Collection
,或者一次要操作多条记录时,可以使用事务完成。
云开发提供了两种接口:
- runTransaction
- startTransaction
具体使用方法及区别,请参考小程序云开发文档。
需要注意的是: