【问题标题】:Firebase cloud function use current value and not value when function was initially calledFirebase 云函数在最初调用函数时使用当前值而不是值
【发布时间】:2020-01-13 12:06:28
【问题描述】:

不确定这是否可以通过 firebase 云功能实现。

假设,我想在特定集合中的所有文档上触发云函数onCreate。 创建后,云功能应该在不同的集合中添加另一个文档。 从手动创建的文档中传递一个值。

当然,这行得通!:

export const createAutomaticInvoice = functions.firestore.document('users/{userId}/lessons/{lesson}').onCreate((snap, context) => {

    let db = admin.firestore();
    let info = snap.ref.data()    

    db.collection('toAdd').add({
        info: info
    })


})

但是,如果我在users/{userId}/lessons/ 中创建一个文档并在之后直接更改info 的值,在触发云功能之前,云功能会采用info 的旧值作为它被更改的那个值到。

这是预期的行为吗?对我来说,这绝对不是我假设它在运行时采用的值。

如何使我的示例按预期工作?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    这是预期的行为 - 该函数将在该文档创建后尽快执行。快照始终包含文档最初创建时的内容。它不会等待查看该文档在未来某个时间点是否更改,也不会尝试查询该文档以防它可能已更改。

    如果您想处理对文档的更新,您还应该使用 onUpdate 触发器来了解是否发生这种情况。

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2017-10-07
      • 2021-09-13
      相关资源
      最近更新 更多