在Firestore中使用云功能触发onCreate时如何使用事务更新数据?

时间:2018-09-02 05:36:39

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

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

所以我有这样的Firestore数据,并且我想在子集合中添加新与会者时更新rankPoint。 enter image description here

这是我用来触发该功能的代码:

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
        })



    });

但是它不能正常工作,从日志中说: enter image description here

1 个答案:

答案 0 :(得分:1)

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

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