Загрузить данные из Firebase Firestore в массив - angularjs - PullRequest
0 голосов
/ 23 ноября 2018

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

Я основан на https://firebase.google.com/docs/firestore/query-data/get-data примере.

let list = [];

let products = function GetCollection() {
    firestore.collection("products")
        .get()
        .then(function (querySnapshot) {
            querySnapshot.forEach(function (doc) {
                console.log(doc.id, " => ", doc.data());
                list.push(doc.data());
            });
            $scope.collection = list;
        });
}
products();

console.log("test");

После запуска этого кода мой список пуст, но вКонсоль перечислены все записи.Во время отладки я заметил, что последняя строка с console.log («test») выполняется перед всем телом функции GetCollection ().Это проблема с синхронизацией?Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 23 ноября 2018

да, это ожидаемое поведение, console.log("test"); будет выполнено первым.Поскольку part .then(function (querySnapshot является асинхронным вызовом, то, что вы передаете внутри .then, является обещанием javascript, и это асинхронное

, вы также должны использовать ошибку дескриптора, как указано в строке ниже .get(some comde). then ( function -- ). catch ( function (error) { console.log("Error getting cached document:", error); } )

для целей тестирования, вы также можете использовать Firebase синхронную версию метода, как правило, Firebase API имеет соответствующую версию синхронизации, и, если я правильно помню, к ним добавляется суффикс "sync"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...