Условия внутри функций Firebase - PullRequest
0 голосов
/ 08 января 2019

Это для использования условных выражений с функциями Firebase (node.js). Я абсолютный нуб, когда дело доходит до Javascript, поэтому, пожалуйста, потерпите меня. Я пытаюсь отправить push-уведомления с различной полезной нагрузкой (звуком) в зависимости от категории заказанной еды. Я попробовал следующий код, но уведомления не отправляются. Если я удалил условные выражения if-else, тогда будут отправлены уведомления. Не уверен, что я делаю не так. Код скомпилирован нормально. Спасибо, парни. Журнал показал "ReferenceError: полезная нагрузка не определена в admin.database.ref.once.then.allToken (/user_code/index.js:60:58) at 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 голосов
/ 08 января 2019

Константа видна только внутри блока, где она была объявлена. Вы объявляете две разные переменные полезной нагрузки const, встроенные в блок, недоступный для того места, где вы пытаетесь его использовать. Вам нужно будет объявить это так:

let payload;

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

Тогда вы можете использовать полезную нагрузку сразу после условного, потому что она будет в пределах вашего вызова для администратора SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...