我试图编写一个Firebase实时数据库触发器,以监视何时创建了新的聊天消息,然后我想在记录树中导航到父记录,以从聊天会话中检索信息。我在尝试找到正确的参考级别以标识父记录时遇到麻烦。
我的数据库结构如下所示,chatSessions是最高级别(我忘记包括在屏幕截图中),它显示了chatSession记录:
使用以下命令调用我的触发器:
exports.chatUpdate = functions.database.ref('/chatSessions/{sessionId}/messages/{messageId}').onCreate((event, context) => {
event.ref.parent.once("value").then(snapshot => {
const session = snapshot.val();
}
}
我如上所述尝试过,并且session作为消息列表返回,这很有意义,因此我尝试了以下操作,但这对于session没有返回任何内容:
event.ref.parent.parent
基本上,我想转到上面的chatSession,以检索会话中两个用户的ID,因此我可以确定在我的应用中向谁发送通知。谢谢!
答案 0 :(得分:1)
我不是100%肯定我已经正确理解了您的问题,但是如果您按照以下说明进行操作,您将得到一个session
对象,其中包含driverId
和userId
>
exports.chatUpdate = functions.database
.ref('/chatSessions/{sessionId}/messages/{messageId}')
.onCreate((event, context) => {
return event.ref.parent.parent.once('value').then(snapshot => {
const session = snapshot.val();
console.log(session);
return null;
//here, instead of returning null, you may return the Promise returned by the notification sending asynchronous task
});
});
此外,如果您还想获取sessionId
值,只需使用context.params.sessionId
。