Firebase侦听器,用于参考中的特定文本

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

Firebase事件侦听器。如果数据显示:“好友请求”,而不仅仅是数据更改,我想执行。

我已经尝试搜索听众。我发现:https://firebase.google.com/docs/database/admin/retrieve-data

我感觉我已经接近了,但是在细节方面我需要帮助。

exports.sendNotification = functions.database.ref('/Notifications/{user_id}/{notification_id}').onWrite((change, context) => {

   const user_id = context.params.user_id;
   const notification_id = context.params.notification_id;

   const deviceToken = admin.database().ref('/' + user_id +'/device_token').once('value');
   return deviceToken.then(result => {

    const token_id = result.val();

    const payload = {
     notification: {
      title: "Friend Request",
      body: "You've received a new Friend Request! <3",
      icon: "default"
     }
    };
   });

});

我的代码会执行(如预期的那样),无论是在我编写时还是在删除时。但是:有一种方法可以代替,检查是否向数据库中写入了特定内容?

忍受我,来自Java。但是类似:

functions.database.ref('/Notifications/{user_id}/{notification_id}/type("friend request")')
.onWrite((write, context) => {.....

我想要一个侦听器,检查什么数据/通知类型,我正在写数据库。然后相应地执行。

最诚挚的问候。

javascript firebase firebase-realtime-database
1个回答
1
投票

如果我理解正确,则需要执行以下操作,检查type的值:

exports.sendNotification = functions.database.ref('/Notifications/{user_id}/{notification_id}').onWrite((change, context) => {

    const user_id = context.params.user_id;
    const notification_id = context.params.notification_id;

    const afterData = change.after.val();

    if (afterData.type === "friend request") {
        const deviceToken = admin.database().ref('/' + user_id + '/device_token').once('value');
        return deviceToken.then(result => {

            const token_id = result.val();

            const payload = {
                notification: {
                    title: "Friend Request",
                    body: "You've received a new Friend Request! <3",
                    icon: "default"
                }
            };

            //Here you need to return the promise returned by an asynchronous operation, probably return admin.messaging()....
        });
    } else {
        console.log("Not a friend request");
        return null;
    }

});
© www.soinside.com 2019 - 2024. All rights reserved.