我正在尝试为受邀参加活动的所有客人发送通知。
以下代码最多可返回console.log(guestPlayerIds);
,返回undefined
。通过guestPlayerIds
的最佳方式是什么?
exports.sendNewEventFcm = functions.database.ref('/fcm/{pushID}').onWrite(event => {
const eventID = event.params.pushID;
const dsnap = event.data.val();
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
let guests = Object.keys(dsnap);
const promises = guests.map((data) => admin.database().ref('playerIds').child(data).once('value'));
return Promise.all(promises).then(data => {
let guestPlayerIds = [];
let returns = data.map(item => {
let itemVal = Object.keys(item.val())[0];
console.log(Object.keys(item.val())[0])
guestPlayerIds.push(itemVal);
});
}).then(guestPlayerIds => {
console.log(guestPlayerIds);
})
});
答案 0 :(得分:1)
使用map
很好,但你应该在回调中返回一些内容,然后返回整体map
的结果:
return data.map(item => {
let itemVal = Object.keys(item.val())[0];
console.log(Object.keys(item.val())[0])
return itemVal;
});
此时你实际上并不需要数组变量guestPlayerIds
。只有在随后的then
中,您才可以像使用它一样使用它。