Функция Firebase, возвращаемая до полной выборки данных - PullRequest
0 голосов
/ 19 октября 2019

Функция Firebase возвращает ob2 до того, как данные извлекаются из хранилища через цикл

return admin.firestore().collection("doctors").doc(data.type).listCollections().then(function (doc) {

    // console.log(doc);
    var arr=[];
    let ob2;
    for(let coll of doc) {
        ob2=admin.firestore().collection("doctors").doc(data.type).collection(coll.id).doc("docdetail").get().
        then((x)=>{
                    arr.push(x.data());
                    obj.users=arr;
                    return obj;
        })

    }
  console.log(ob2);
  return ob2;
})

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Ваша проблема в том, что вы не используете обещания должным образом. Ваш код внизу «return ob2» выполняется непосредственно перед возвратом чего-либо. Измените ваш код на приведенный ниже код, и он должен работать. Или еще лучше использовать async await.

return admin.firestore().collection("doctors").doc(data.type).listCollections().then(function (doc) {

// console.log(doc);
var arr=[];
let ob2;
for(let coll of doc) {
    return admin.firestore().collection("doctors").doc(data.type).collection(coll.id).doc("docdetail").get().
    then((x)=>{
                arr.push(x.data());
                obj.users=arr;
                console.log(obj);
                return obj;
    })

   };
});
0 голосов
/ 20 октября 2019

Вы работаете с ссылкой на документ .

Пример: опубликовано в сети :

let documentRef = firestore.doc('col/doc');

documentRef.listCollections().then(collections => {
  for (let collection of collections) {
    console.log(`Found subcollection with id: ${collection.id}`);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...