【问题标题】:Cloud Function Increment counter without reading document云函数增量计数器不读取文档
【发布时间】:2019-08-22 04:09:54
【问题描述】:

我希望在不阅读文档的情况下增加或减少云函数中的数字。

我有一个项目文档,当文档更新时,它会检查数量。如果数量大于零,则增加商店配置文件项目计数。假设商店有 10 件商品可用,并且商品文档字段已从 0 更新为 1 库存,我需要将商店商品计数增加到 11。

我记得在 firebase 博客上看到有一个新功能可以实现这一点。但是我们如何在云函数中做到这一点呢?

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    您通过 Admin SDK 使用 Cloud Functions 中的功能。这是一个基于我正在进行的项目的示例。

    首先导入 Admin SDK:

    var admin = require('firebase-admin');
    

    然后在您的云函数中,您可以使用以下内容增加字段:

    var firestore = admin.firestore();
    var docRef = firestore.collection('your_collection').doc('your_document');
    docRef.update({ itemCount: admin.firestore.FieldValue.increment(1) })
    

    这会将itemCount 字段增加1

    另见:

    【讨论】:

    • const admin = require('firebase-admin'); docRef.update({ 'availableItemsCount' : admin.firestore().FieldValue.increment(1), });错误:TypeError:无法在流程._tickDomainCallback(内部/流程/next_tick)的处读取exports.setAvailableItemsCount.functions.firestore.document.onUpdate(/srv/index.js:206:74)处未定义的属性“增量” .js:229:7)
    • 嗯....我以为这个功能也已经在 Admin SDK 中发布了。让我检查一下……
    • 不应该是admin.firestore.FieldValue而不是admin.firestore().FieldValue吗?
    • @Mozesong:正如雷诺指出的那样,firestore 后面应该是不带括号的admin.firestore.FieldValue
    • @FrankvanPuffelen 但由于云函数可能在一次调用中运行多次,因此在 Cloud Functions 中使用 FieldValue.increment 永远不安全,是吗?
    猜你喜欢
    • 2021-04-03
    • 2017-08-12
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多