gpt4 book ai didi

javascript - 子收藏更新触发云功能

转载 作者:行者123 更新时间:2023-12-05 00:30:18 24 4
gpt4 key购买 nike

我知道这个问题已经被问过了,但它没有帮助。
我有一个“聊天”集合,其中包含一个文档“成员”和一个子集合“消息”,我想在子集合中添加新消息时触发云功能。
这是我尝试过的,但它仅在“成员”更新时触发,并且没有关于子集合的任何信息:

exports.chatsCollectionTriggers = functions.firestore.document('/chats/{chatId}/messages/{messageId}').onUpdate(async (change, context) => {

let chatBefore = change.before.data();
let chatAfter = change.after.data();

console.log(JSON.stringify(chatBefore, null, 2));
console.log(JSON.stringify(chatAfter, null, 2));

console.log(context.params.chatId);
console.log(context.params.messageId);});
我的 Firestore 收藏:
enter image description here
我的问题是如何在子集合更新时触发云功能?

最佳答案

修改 chats 的文档时不会触发您的 Cloud Function集合(例如,如果您修改 members 文档的 G162R... 字段)。
您的云函数将在您 时触发修改 (不是在您创建时)messages 中的文档chats 中文档的子集合收藏。例如,如果您更改 text 的值消息文档的字段vVwQXt.... .

所以,回答你的问题

My question is how can I trigger a cloud function on a sub-collectionupdate


如果“子集合更新”是指 更新 对于子集合中的现有文档,您的云函数是正确的。
如果“子集合更新”是指 创作 子集合中的文档(可以是“子集合更新”的一种解释),您应该将触发器类型从 onUpdate() 更改为至 onCreate() .
从您问题中的以下句子,即“我想在子集合中添加新消息时触发云功能 ”,您似乎想选择第二种情况,所以您应该如下调整您的云功能:
exports.chatsCollectionTriggers = functions.firestore.document('/chats/{chatId}/messages/{messageId}').onCreate(async (snap, context) => {

const newValue = snap.data();

console.log(newValue);

console.log(context.params.chatId);
console.log(context.params.messageId);

return null; // Important, see https://firebase.google.com/docs/functions/terminate-functions

})

更多详情请查看 doc .

关于javascript - 子收藏更新触发云功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65407413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com