Firebase 函数中的条件
Conditionals within Firebase Functions
这是为了在 Firebase 函数中使用条件 (node.js)。在 Javascript 方面我完全是菜鸟所以请多多包涵。我正在尝试根据订购的食物类别发送具有不同有效负载(声音)的推送通知。我尝试了以下代码,但没有发送任何通知。如果我删除了 if-else 条件,则会发送通知。不确定我做错了什么。代码编译得很好。多谢你们。日志显示“ReferenceError: payload is not defined
在 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)
});
});
const 仅在声明它的块内可见。您正在声明两个不同的 const payload vars 嵌入到您尝试使用它的地方无法访问的块中。您需要这样声明它:
let payload;
if (...) {
payload = ...
} else {
payload = ...
}
然后您可以在条件后立即使用有效载荷,因为它会在您调用管理 SDK 的范围内。
这是为了在 Firebase 函数中使用条件 (node.js)。在 Javascript 方面我完全是菜鸟所以请多多包涵。我正在尝试根据订购的食物类别发送具有不同有效负载(声音)的推送通知。我尝试了以下代码,但没有发送任何通知。如果我删除了 if-else 条件,则会发送通知。不确定我做错了什么。代码编译得很好。多谢你们。日志显示“ReferenceError: payload is not defined 在 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)
});
});
const 仅在声明它的块内可见。您正在声明两个不同的 const payload vars 嵌入到您尝试使用它的地方无法访问的块中。您需要这样声明它:
let payload;
if (...) {
payload = ...
} else {
payload = ...
}
然后您可以在条件后立即使用有效载荷,因为它会在您调用管理 SDK 的范围内。