云开发锁表、秒杀机制的简单实现
1000个用户抢10个奖品,如何实现锁表、秒杀等功能?
极简代码如下:
db.collection('products').where({
_id: productId,
stock: _.gt(0)
}).update({
data: {
stock: _.inc(-1),
luckers: _.addToSet(openid)//秒杀的同时,标注用户openid
}
}).then(res => {
console.log(res)
})
以上代码,在1000个人的小程序同时执行,只有10个人(与stock相等)能够成功,返回res.stats.updated==1,其余人都会失败。从而实现了秒杀功能。