Firebase云功能在instanceId上发送多个通知

时间:2017-07-20 12:24:03

标签: node.js firebase firebase-cloud-messaging google-cloud-functions

这是我的代码,我第一次得到后来的。它检查任何行程是否安排,如果安排了任何行程,那么它进入并获取驱动程序列表并发送通知。但问题是它一次又一次地发出通知。亲切帮助。

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

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.testing = functions.https.onRequest((req, res) => {
    console.log("start");


    var newArray = [];
let date = new Date();

var hours = date.getHours() +  5;
var minute = date.getMinutes() ;
var year = date.getFullYear() ;
var month = date.getUTCMonth() + 1 ;
var day = date.getDate() ;

        var total_date = day + "/" + month + "/" + year;
        var total_time = hours + ":" + minute;
        var ridelater = admin.database().ref("ridelater");
        ridelater.orderByValue().on("value", function(snapshot) {
        snapshot.forEach(function(data) {

    var str  = data.val().time;

    const senderUid = data.val().client_key;

    if(data.val().date == total_date){

        var arr = str.split(":");
        var start_minute = arr[0] * 60;
        var val = parseInt(arr[1], 10);
        var timing = val - 30;
        var start = start_minute + timing ; 

        var end_minute = hours *60;
        var end = end_minute + minute;
        var diff = end - start;


        if  (diff <= 30){


        var driver = admin.database().ref("user/driver");
      driver.orderByValue().on("value", function(snapshot) { 
      snapshot.forEach(function(instnaceIds) {

        //if(instnaceIds.val().status == "free"){

        const promises = [];
        const receiverUid = instnaceIds.key;

     const getInstanceIdPromise = 
    admin.database().ref(`/user/driver/${receiverUid}/instanceId`)
    .once('value');
    const getSenderUidPromise = admin.auth().getUser(senderUid);

    Promise.all([getInstanceIdPromise, getSenderUidPromise]).then(results => 
  {
        const instanceId = results[0].val();
        //const sender = results[1];
        console.log('notifying ' + receiverUid +' from ' + senderUid);

        var data1={
            'users_key': senderUid,
                'org_address' : data.val().org_address,
                'dest_address' : data.val().dest_address,
                'status' : "request",
                'Nodekey' : data.key,
                'user_name' : data.val().user_name,
                'org_lat' : data.val().org_lat,
                'org_long' : data.val().org_long,
                'dest_lat' : data.val().dest_lat,
                'dest_long' : data.val().dest_long,
                'payment' : data.val().payment_method,
                'category' : data.val().category,
                'Nodekey' : data.val().node_key,
                };
        var data2 = JSON.stringify(data1);
        console.log(JSON.stringify(data1));
        const payload = {
            notification: {
                title: "Qandeel Haider",
                body: data2
            }
        };


        console.log(payload);

        return admin.messaging().sendToDevice(instanceId, payload)
            .then(function (response) {
                console.log("Successfully sent message:" + instanceId);
            })
            .catch(function (error) {
                console.log("Error sending message:", error);
            });
    });
        //}
    });
            });




        }
    else{
    console.log("Not found" + data.val().time);
    }
}
    else{
    console.log("Not found" + data.val().date);

    }
                    console.log("IN");

      });
    });
console.log("end");
res.status(200).end();
});

0 个答案:

没有答案