首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对事务和锁定的一些怀疑

对事务和锁定的一些怀疑
EN

Stack Overflow用户
提问于 2022-01-23 17:45:46
回答 1查看 79关注 0票数 0

当用户验证他的邮件地址时,我正在使用云功能在一个向用户分配优惠券的优惠券系统上工作。

对于我的设计,我有一个/coupons集合,预装了很多优惠券。

用户将验证他调用HTTP函数的邮件地址,为此,我想将优惠券分配给从优惠券集合中选择一张优惠券的用户,在优惠券集合上查询名为"userId“的字段。

查询样本:

代码语言:javascript
运行
复制
const pickOne = () => {
    return firestore
        .collection('coupons')
        .where('userId', "==", 'none')
        .limit(1)
}

我知道萤火虫交易。

我的想法(如果可能的话)是调用pickOne作为transaction ()函数的参数,并在其上写入值"userId“,然后关闭并提交事务。

我的怀疑与锁定系统有关:是否有可能避免并发用户可能拥有相同的优惠券?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-23 18:04:42

是的,您可以在事务中执行这种类型的查询,以便有效地为用户查找单个文档,在其中写入他们的ID,并防止在具有相同查询的其他事务中再次使用该查询。它只适用于后端SDK(如nodejs),而不适用于客户端SDK。我在其他项目中也做过类似的事情。

有关细节,请参阅API文档

唯一需要注意的是,在很高的写压力下,事务可能会因为重试太多而失败。在这种情况下,您必须在代码中显示错误或手动重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70824893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档