更新时使用云功能获取父节点和子节点的内容

时间:2019-12-10 09:46:18

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

我正在使用firestorm cloud函数,我已经设计好数据库,以便我们有chatRooms,每个聊天室都有一个称为message的子集合,我希望在发送新消息时触发该函数,以便我已经完成了

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

});

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

1 个答案:

答案 0 :(得分:0)

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

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

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

让我们在4种情况下进行解释。

1-用户收到消息时在聊天室外面,因此当聊天室更新指示符的前后值均为false时(仅指示接收到新消息的信息将被更新) ,通知将正确发送。

2-用户收到消息时位于聊天室内,指示符的前后值均为true(用户在会议室内不发送通知),因此不会发送任何消息。 / p>

3-用户在聊天室内,他离开了,因此before值为true,after值为false,将不会发送通知。

4-用户位于聊天室外面,而他进入聊天室,before值为false,after值为true,则不会发送任何通知。

我希望这可以帮助与我有同样问题的任何人玩得开心!