NodeJS Firebase的多主题监听器

时间:2017-12-07 04:29:49

标签: android node.js firebase firebase-realtime-database listener

我正在尝试为Firebase中的多个节点注册监听器,目前,我的移动应用程序只监听一个节点,并且它工作正常,但我希望它也能听取其他主题/节点,如何实现?< / p>

const functions = require('firebase-functions');

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
//  response.send("Hello from Firebase!");
// });

// imports firebase-functions module
// const functions = require('firebase-functions');
// imports firebase-admin module
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

/* Listens for new messages added to /messages/:pushId and sends a 
notification to subscribed users */
exports.pushNotification = 
functions.database.ref('/user_appointments/{userId}').onWrite( event => {
console.log('Push notification event triggered');
/* Grab the current value of what was written to the Realtime Database */
    var valueObject = event.data.key;
    if (!event.data.exists()) {return}
    console.log(valueObject); 

/* Create a notification and data payload. They contain the notification 
information, and message to be sent respectively */ 
    const payload = {
        data: {
            title: String(valueObject),
            message: String(valueObject)
         }
    };
 /* Create an options object that contains the time to live for the 
notification and the priority. */
    const options = {
        priority: "high",
        timeToLive: 60 * 60 * 24 //24 hours
        };
      return admin.messaging().sendToTopic("user_appointments", payload, 
options);
     });

1 个答案:

答案 0 :(得分:0)

如果节点具有相似的结构,但位于不同的位置,则应将实际代码分离为辅助函数:

function sendNotification(event => {
console.log('Push notification event triggered');
/* Grab the current value of what was written to the Realtime Database */
    var valueObject = event.data.key;
    if (!event.data.exists()) {return}
    console.log(valueObject); 

/* Create a notification and data payload. They contain the notification 
information, and message to be sent respectively */ 
    const payload = {
        data: {
            title: String(valueObject),
            message: String(valueObject)
         }
    };
 /* Create an options object that contains the time to live for the 
notification and the priority. */
    const options = {
        priority: "high",
        timeToLive: 60 * 60 * 24 //24 hours
        };
      return admin.messaging().sendToTopic("user_appointments", payload, 
options);
     });

然后将此帮助程序函数绑定到数据库中的两个位置:

exports.pushNotification = 
functions.database.ref('/user_appointments/{userId}').onWrite( event => {
  sendNotification(event);
});
exports.pushNotification2 = 
functions.database.ref('/doctor_appointments/{doctorId}').onWrite( event => {
  sendNotification(event);
});