Функция вернула неопределенное, ожидаемое обещание или значение.хотя я возвращаю snapshot.val (); - PullRequest
0 голосов
/ 10 декабря 2018

Я пишу облачную функцию для моего проекта.последние 12 часов я застрял с этой ошибкой "функция вернула неопределенное, ожидаемое обещание или значение" я много пытался удалить его, но не смог найти способ его решить

exports.Notify = functions.database.ref('blood_share/Notifications/{user}/{notificationid}').onWrite((change, context) => {

        const username=context.params.user;
        const notifyid=context.params.notificationid;


        const query = admin.database().ref("blood_share/Notifications").child(username).child(notifyid);
        query.once('value').then(snapshot=>{
         const event = snapshot.val();

        const notificationMessage = event.messsage;
        const token_id=event.reciever_appid;
        console.log("message"+notificationMessage);



        //create notification Json

        const payLoad = {
       notification:{
         title: "New Request For Food",
         body: "kuch b",
         icon: "default"
       }
     };

      return snapshot.val();

         }).catch(error => {
         console.error(error);

         });    

   });

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Вы возвращаете значение, когда обещания query.once('value') разрешаются.

Чтобы прояснить это, посмотрите на это:

let a = 0;
asyncFunctionPromise.then(() => {
 a = 1;
});
console.log(a); // Will print 0 instead of 

Вместо этого прямо верните обещание return query.once('value').then(.... или создайте свое собственное с

return new Promise((resolve) => {
  query.once('value').then(snapshot=>{
       // do something
       resolve(snapshot.val()); // To resolve the promise with snapshot.val()
  });
})
0 голосов
/ 10 декабря 2018

Вместо возврата snapshot.val (), который является значением, вернуть Обещание

return Promise.resolve(snapshot.val());
0 голосов
/ 10 декабря 2018

вам нужно вернуть обещание

 return query.once('value').then(snapshot=>{
  //....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...