【问题标题】:Cloud function on update get content of both parent and child node云功能更新获取父节点和子节点的内容
【发布时间】:2020-04-03 11:13:45
【问题描述】:

我正在使用 firestorm 云功能,我已经将我的数据库设计为我们有 chatRooms 并且每个聊天室都有一个名为 messages 的子集合,我希望在发送新消息时触发该功能所以我已经这样做了

exports.notifications = functions.firestore.document('MyChats/{chat_room_id}/message').onWrite((snapShot,context)=>{

});

因此,每次将新文档写入消息子集合时,都会触发此功能,我需要获取一些存储在 chatRoom 文档中的信息,我创建了一个字段,该字段的值告诉我是否对方是否在聊天室,如果他们在聊天室,我不会向他们发送通知,如何在触发功能时访问聊天室文档中存储的信息而无需下载文档我自己,提前谢谢你。

【问题讨论】:

  • 能否请您提供示例数据模型的屏幕截图(注意不要显示任何敏感内容),以及您要阅读哪些字段?
  • 我找到了解决问题的方法,但谢谢!

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


【解决方案1】:

我找到了解决问题的方法,我不想将触发器放在聊天室上,因为每次用户离开聊天室时都会触发该功能。 当用户离开聊天室时,表示他在聊天室中的值将更改为false,结果聊天室将被更新并触发该函数,该函数将检查用户是否在该聊天室中与否(他不是),然后将向他发送通知,尽管没有发送新消息。

我是如何解决这个问题的?如果我们使用snapshot.before和snapshot.after我们可以解决这个问题,让我们解释一下,当我们在聊天室里时,指标值是true,当我离开聊天室时,值会更新为false,所以我们检查之前快照的值,在这种情况下,该函数将检查指标的前值(为真)并且不会发送通知(用户在聊天室中,无需发送通知)。

但是如果用户在聊天室之外并且他进入了聊天室怎么办?在这种情况下,指标的值为假,将更改为真,该函数将检查指标的前值(为假)并发送错误通知,那么我们该怎么办?解决办法是指标的前后值都必须为假,让我解释一下原因。

让我们在 4 个场景中解释这一点。

1-用户在收到消息时不在聊天室,所以聊天室更新时指标的before和after值为false(只会更新表示收到新消息的信息) ,通知将正确发送。

2-用户收到消息时在聊天室内,前后指标为真(用户在房间内不发送通知),所以不会发送消息。

3-用户在聊天室中离开,所以before值为true,after值为false,不会发送通知。

4-用户在聊天室外,进入聊天室,前值为假,后值为真,不发送通知。

希望对和我有同样问题的人有帮助,玩得开心!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多