Android 更新获取父节点和子节点内容时的云函数

Android 更新获取父节点和子节点内容时的云函数,android,google-cloud-firestore,google-cloud-functions,Android,Google Cloud Firestore,Google Cloud Functions,我正在使用firestorm云功能,我设计了我的数据库,这样我们就有了聊天室,每个聊天室都有一个子集合,称为messages,我希望在发送新消息时触发该功能,所以我已经完成了这项工作 exports.notifications = functions.firestore.document('MyChats/{chat_room_id}/message').onWrite((snapShot,context)=>{ }); 因此,每当一个新文档写入messages子集合时,就会触发此功能

我正在使用firestorm云功能,我设计了我的数据库,这样我们就有了聊天室,每个聊天室都有一个子集合,称为messages,我希望在发送新消息时触发该功能,所以我已经完成了这项工作

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

});

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

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

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

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

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

1-当用户收到消息时,他不在聊天室,因此当聊天室更新之前和之后的指示器值为false时(仅更新指示收到新消息的信息),通知将正确发送

2-当用户收到消息时,他在聊天室中,指示器的前后值为真(用户在聊天室中,不发送通知),因此不会发送任何消息

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

4-用户在聊天室外面,他进入聊天室,before值为false,after值为true,不会发送通知


我希望这能帮助任何和我有同样问题的人,玩得开心

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