使用Cloud Firestore触发器函数时如何获取dataID?

时间:2018-08-31 10:58:29

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

我在Firestore数据库中有一个这样的事件集合:

enter image description here

我想使用云Firestore触发器。当用户参加活动时,活动的容量为-1,并且当此字段更新时,我要自动更新另一个字段(“ rankPoint”)+ 3

enter image description here

要实现此目的,我需要在文档更新时触发一个函数

从Firestore文档中,会是这样

exports.updateUser = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {

      // Get an object representing the document
      // e.g. {'name': 'Marie', 'age': 66}
      const newValue = change.after.data();

      // ...or the previous value before this update
      const previousValue = change.before.data();

      // access a particular field as you would any JS property
      const name = newValue.name;

      // perform desired operations ...
    });

就我而言,应该是'events / {eventId}'对吗?但是如何在通配符中获取该eventID?它来自客户端吗?我的意思是在iOS / Android中,我将编写代码以进行更新

db.collection("eventss").document("someEventIDHere").setData(data)

是从客户那里来的吗?

1 个答案:

答案 0 :(得分:1)

您的函数将仅交付与已更改的函数模式(用户/ {userId})匹配的文档。在查询其他文档之前,其他文档不可用。因此,如果要从事件集合中获取文档,则必须编写一些代码来访问它,然后从那里决定要做什么。

听起来像您期望有一个eventId通配符,但没有。您在函数中定义的只是userId通配符。其他值将需要从用户文档中提供的数据中得出。