Я пытаюсь написать функцию firebase, и мне интересно, есть ли способ избежать вложенных обещаний в этом коде JavaScript?
exports.sendNotification=functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite((change,context)=>{
const userId=context.params.user_id;
const notificationId=context.params.notification_id;
console.log('We have a notification to send to: ', userId);
if(!change.after.val()){
return console.log('A notification has been deleted from database ',notificationId);
}
const fromUser=change.after.ref.root.child("/notifications/"+userId+"/"+notificationId).once('value');
return fromUser.then(fromUserResult=>{
const fromUserID=fromUserResult.val().from;
console.log('You have new notification from'+fromUserID);
const userQuery=change.after.ref.root.child(`users/${fromUserID}/name`).once('value');
const deviceToken=change.after.ref.root.child("/users/"+userId+"/device_token").once('value');
return Promise.all([userQuery, deviceToken]).then(resut=>{
const userName=resut[0].val();
const token_id=resut[1].val();
const payload={
notification:{
title: "Friend request",
body: `${userName} has send you request`,
icon: "default",
click_action: "com.mwdevp.android.lapitchat_TARGET_NOTIFICATION"
},
data :{
USER_KEY: fromUserID
}
};
return admin.messaging().sendToDevice(token_id,payload).then(response=>{
console.log('This was the notification feature');
return;
});
});
});
});
Кто-нибудь знает, как можно избежать вложенных обещаний в этом коде?