Чтение данных из Firebase и отображение в чате с помощью Node Js - PullRequest
0 голосов
/ 01 января 2019

Я новичок в базе данных Firebase в реальном времени и в Google Dialogflow.Я просмотрел документы и продолжаю работать.Я читаю данные из базы данных и хочу отобразить их в своем чате.Я могу видеть данные в журналах, но не могу отобразить их в чате.Если я проверяю логи, я вижу успешный или неудачный результат, но не вижу его в чате.

Это код ниже:

var childData = "";    
var message = '';    
var query = '';
var key = '';

function wheretogo(agent) {    
    //taking country name as input from user    
    var country = request.body.queryResult.parameters.country;    
    //reference country from the database    
    query = admin.database().ref("country").orderByKey();    
    query.once("value")    
        .then(function(snapshot) {    
            snapshot.forEach(function(childSnapshot) {    
                key = childSnapshot.key;    
                childData = childSnapshot.val();    
                //matching the input from user and the country name(key) from database    
                if (country === key) {    
                    console.log("sucess");    
                    message = 'Thats nice ! You are travelling to ' + key;    
                    agent.add(message);    
                }
                 else 
                 {
                   console.log("failed");
                 }    
                });
             });
           }

Я ожидаю вывода 'Это мило !Вы путешествуете с названием страны в моем чате.

1 Ответ

0 голосов
/ 01 января 2019

Проблема в том, что библиотека Dialogflow ожидает, что вы вернете Promise, если вы делаете какие-либо асинхронные вызовы.Поскольку вы делаете асинхронный вызов (query.once() вызов), вы должны вернуть Обещание.В противном случае диспетчер обработчика не будет ждать поступления ответа из базы данных, прежде чем попытается отправить ответ пользователю.

Вы не показываете весь свой код, но в вашем случае он выглядит довольнопростой.Поскольку query.once() возвращает обещание, вы можете вернуть это обещание.Что-то вроде этого изменения

 return query.once("value") 

может быть всем, что необходимо.

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