不确定使用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
的旧值更改为它的那个。
这是预期的行为吗?对我来说,它绝对不是我所假定的,它在运行时采用这些值。
如何使示例工作正常?
答案 0 :(得分:1)
这是预期的行为-创建该文档后,该函数将尽快执行。快照将始终包含文档最初创建时的内容。不必等待该文档在将来的某个时刻发生更改,也不会尝试查询该文档,以防它可能已更改。
如果您要处理文档更新,则还应该使用onUpdate触发器来了解是否发生这种情况。