2017-12-07 12 views
0

Firebaseに複数のノードのリスナーを登録しようとしていますが、現在、モバイルアプリケーションは1つのノードのみをリッスンしていますが、うまくいきますが、他のトピック/ノードも、それを達成する方法は?FirebaseのNodeJS複数トピックリスナー

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); 
    }); 
+0

ここにあなたはより多くの情報を持っています:https://firebase.google.com/docs/cloud-messaging/android/topic-messaging – diegoveloper

答えて

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); 
    }); 

あなたは、このネクタイヘルパー機能をデータベース内の2つの場所に追加します。

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

ありがとうございます!その働き、あなたの答えを受け入れました。 – salam94

関連する問題