Firebase函数中的条件

时间:2019-01-07 23:04:19

标签: javascript firebase firebase-cloud-messaging google-cloud-functions firebase-admin

这用于将条件条件与Firebase函数(node.js)一起使用。关于Javascript,我绝对是菜鸟,请耐心等待。我正在尝试根据所订购食物的类别发送具有不同有效负载(声音)的推送通知。我尝试了以下代码,但未发送任何通知。如果删除了if-else条件,则发送通知。不知道我在做什么错。代码编译良好。谢谢你们。日志显示“ ReferenceError:有效载荷未定义     在admin.database.ref.once.then.allToken(/user_code/index.js:60:58)     在process._tickDomainCallback(internal / process / next_tick.js:135:7)“

exports.sendRequestNotification = functions.database.ref('/Requests/{id}').onCreate((snap, context) => {

    const snapShot = snap.val();
    console.log(snapShot);


     if (snap.child("RequestItemCategory").val() === 1) {
     const payload = {
        notification: {
            title: 'Food Ordered',
            body: 'Seat Number: ' + snap.child("Seat").val() + '   Request Item: ' + snap.child("RequestItem").val(),
            sound: 'food.wav'
        }
       };
     } else {     
     const payload = {
         notification: {
            title: 'New Request Received',
            body: 'Seat Number: ' + snap.child("Seat").val() + '   Request Item: ' + snap.child("RequestItem").val(),
            sound: 'drinks.wav'
       }
      };
     }

    return admin.database().ref('/Tokens').once('value').then(allToken => {
        const token = Object.keys(allToken.val());
        console.log(token);
            return admin.messaging().sendToDevice(token, payload)
    });

}); 

1 个答案:

答案 0 :(得分:1)

一个const仅在声明它的块内可见。您要声明两个不同的const有效负载var,它们嵌入在您尝试使用它的位置无法访问的块中。您需要改为这样声明它:

let payload;

if (...) {
    payload = ...
} else {
    payload = ...
}

然后,您可以在条件之后立即使用有效负载,因为有效负载将在您调用admin SDK的范围之内。