Облачная функция Firebase не возвращает результат при выполнении второго запроса Firebase - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в облачных функциях. Мне удалось выполнить простой запрос и успешно отправить результат клиенту. Однако, когда я задаю второй запрос, я всегда получаю объект результата в том виде, в каком он был объявлен изначально: {res: "", data: Array (0)}

Я вроде как застрял, любая помощь будет очень оценил ...

export const validaId1 = functions.https.onCall((input, context) => {

    const admin = require('firebase-admin');
    var directorsArray: any = [];
    var result = { res: "", data: directorsArray };

    if (!admin.apps.length) {
        admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
    }


    //FIRST QUERY, WORKS PERFECT...

    var db = admin.firestore();
    const query = db.collection("users").doc(input);
    return query.get().then((doc: any) => {
      if (doc.exists) {

     **//SECOND QUERY. I'M SURE WORKS RIGHT, BUT I JUST CAN'T GET THE RESULT SENT**
      getDirectors(() => {
        result.res = "OK";
        result.data = directorsArray;
      })
    //END OF SECOND QUERY



    } else
      if (!doc.exists) {
        result.res = "User does not exist";
        result.data = [];
      }

    return result; //MAYBE THIS IS BEING EXECUTED BEFORE THE SECOND QUERY FINISHES??

    })
    .catch((err: any) => {
      return {
        res: "Error",
        data: err
      }
    })

     //SECOND QUERY
     function getDirectors(callback: any) {
        db.collection("directors").get().then((querySnapshot: any) => {
          querySnapshot.forEach((director: any) => {
            directorsArray.push(director);
          })
        }).then(() => {
          callback()
        })
          .catch((error: any) => {
            console.log("Error getting documents: ", error);
           });
        }

});
...