Выполнение HTTPS-запроса с Node.JS для Firebase - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь получить все документы в коллекции в firestore с помощью node.js, но я не могу получить никаких документов, хотя есть кто-то, кто знает, в чем проблема с этой функцией:

exports.getTasksNew8 = functions.https.onRequest((request,response) => {
    admin.firestore().collection('users/admin/settings').get().then(querySnapshot=>{
        querySnapshot.forEach(documentSnapshot=>{
            console.log(documentSnapshot.id)
        })
    }).catch(error=>{
    console.log(error)
    })
    response.send('works ok)
})

1 Ответ

3 голосов
/ 04 октября 2019

Метод get() является асинхронным и возвращает Обещание: вы должны «обработать» результат в методе then(). См. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then и Что означает функция then () в JavaScript? , а также https://scotch.io/tutorials/javascript-promises-for-dummies#toc-promises-are-asynchronous

Выполнение response.send('works ok) за пределами then(), которое вы указываетеОблачная функция, которую можно завершить до выполнения асинхронного get().

Измените код следующим образом:

exports.getTasksNew8 = functions.https.onRequest((request,response) => {
    admin.firestore().collection('users/admin/settings').get().then(querySnapshot=>{
        querySnapshot.forEach(documentSnapshot=>{
            console.log(documentSnapshot.id)
        })
        response.send('works ok);
    }).catch(error=>{
      console.log(error);
      //See the following video https://firebase.google.com/docs/functions/video-series#learn-javascript-promises-pt1-with-http-triggers-in-cloud-functions
    })

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