如何在写入同一个文档两次的集合上仅触发一次云函数?

问题描述 投票:0回答:1

我刚刚在聊天应用程序上实现了推送通知,由于消息的存储方式,它触发了两次通知。 收藏是, 消息/用户ID/接收者ID/消息ID

消息/接收者ID/用户ID/消息ID

当用户发送消息时,该消息将存储在 users 集合以及receivers 集合中。

在 messageID 位置创建消息时,触发推送通知的函数就会触发,到目前为止,由于消息存储了两次,所以会触发两次。 Firestore 中是否有一种机制可以处理类似的事情并且仅触发该函数一次?或者是否有额外的功能可以处理这种情况?

尝试在创建文档时触发云功能发送推送通知,但由于文档在存储时重复的方式而被触发两次。

google-cloud-firestore google-cloud-functions
1个回答
0
投票

对于每个触发函数的匹配事件,不可能阻止函数至少触发一次。

您可能需要考虑 insetad:

  • 一种不同的实现,其中只有一个触发该功能的消息集合,而其他集合中的其他文档(可能每个用户一个)可能根本不会触发任何内容。
  • 在函数中编写一些逻辑,尝试找出两个文档触发器中的哪一个应该实际执行结果操作(而不是允许其中任何一个触发器执行)。
© www.soinside.com 2019 - 2024. All rights reserved.