【问题标题】:how to update data using transaction when triggering onCreate using cloud function in Firestore?在Firestore中使用云功能触发onCreate时如何使用事务更新数据?
【发布时间】:2018-09-02 05:36:38
【问题描述】:

我观看此视频以使用事务更新实时数据库中的数据:https://www.youtube.com/watch?v=TPKA88_FmkA,但似乎在 firestore 云功能上无法使用事务?

所以我有这样的 Firestore 数据,我想在子集合中添加新参与者时更新 rankPoint。

这是我用来触发函数的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp()


exports.increasePointWhenAddingNewAttendee = functions.firestore
    .document('Events/{eventId}/Attendee/{userId}')
    .onCreate((snap, context) => {

        const eventID = context.params.eventId
        const eventRef = snap.ref.firestore.collection('Events').doc(eventID)

        // increase rankPoint
        return eventRef.transaction(rankPoint => {
            return rankPoint + 1
        })



    });

但它不能正常工作,从日志中说:

【问题讨论】:

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


    【解决方案1】:

    您正在观看的视频是关于实时数据库触发器的,它与 Firestore 触发器有很大不同。它们没有相同的 API。

    如果您想使用 Firestore 执行事务,您需要在 Firestore 对象上调用 runTransaction,而不是 DocumentReference 对象。请参阅Firestore transactions 的文档。同样,它与 Firestore 的工作方式与实时数据库不同。

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 2020-01-09
      • 2020-04-17
      • 2019-08-08
      • 2019-04-14
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多