小程序云开发中抢购或限人数场景的操作技巧:原子操作符与事务

2025-04-10
来源:网络整理

在诸如冲刺购买和有限的人数之类的情况下,这是很常见的。

1。利用原子操作员

在原子运营商的帮助下,这可以实现。原子操作员包括:

例子:

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

小程序云开发事务_编程式事务处理_事务和程序

通过使用原子运营商Inc,避免并发写入的影响。

Mini 云开发文档这样描述了:

使用Inc指令而不是取出值,然后添加10然后将其写入其中的优点是,此写入操作是一种原子操作,并且不会受到并发写入的影响。例如,两个用户A和B使用相同的字段值,然后在将其写入数据库之前分别添加10和20,然后该字段的最终结果将为20而不是30。如果使用INC指令,则将遇到此问题。

()2。利用交易

如果您需要一次操作多个记录,或者您想一次操作多个记录,则可以使用交易完成。

云开发提供了两个接口:

小程序云开发事务_事务和程序_编程式事务处理

有关特定的用法方法和差异,请参阅Mini 开发文档。

应该注意的是:

1。通过回调返回对象,然后直接返回对象。所有交易操作必须在对象下执行。 2。对象提供了一种方法,该操作类似于DB。,但仅支持单个记录操作(.doc,.add),并且不支持批处理操作(,)。

分享