Невозможно получить данные из базы данных Firebase - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь отобразить данные из базы данных Firebase в ответах Dialogflow.

Это мой код:

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    const agent = new WebhookClient({ request, response });

    function getArtikel (agent) {

    return db.collection('artikel').get()
        .then(doc => {
                db.collection('artikel').get().then(function(querySnapshot) {
                    querySnapshot.forEach(function(doc) {
                        console.log(doc.id, " => ", doc.data());
                        return agent.add(doc.data());
                    });
                });
            return Promise.resolve('Search finished');
        }).catch(() => {
            agent.add('Error');
        });
    }

    let intentMap = new Map();
    intentMap.set('GetArtikel', getArtikel);
    agent.handleRequest(intentMap);
});

К сожалению, агент возвращает только пустой ответ, но журналсодержит данные, как ожидалось.Что я тут не так делаю?

1 Ответ

0 голосов
/ 08 октября 2018

Возвращает пустой ответ, потому что db.collection('artikel').get() возвращает promise.Это означает , что работает асинхронно .Если вы вошли в Chrome, вы можете увидеть результат после расширения массива (посмотрите на значок [i])

Вы можете просто решить проблему, добавив async к вашей функции и await после возврата:

async function getArtikel (agent)
return await db.collection('artikel').get()

Проверьте это видео для получения дополнительной информации о async/await

...