Цикл через базу данных firebase в реальном времени

#javascript #firebase-realtime-database #dialogflow-es #dialogflow-es-fulfillment

#javascript #firebase-realtime-database #dialogflow-es #dialogflow-es-выполнение

Вопрос:

Я новичок в программировании.

У меня есть база данных firebase в реальном времени. Я намерен получать данные из базы данных в реальном времени при выполнении условия. Это означает использование оператора цикла.

Вот код:

     function firestore(agent) {
    var firebaseEntity = agent.parameters.firebase;
    return admin.database().ref('questions').once("value").then((snapshot) => {
        var questionList = snapshot.child("Entity").val();
            for (const i in questionList) {
              if (questionList[i].entity == firebaseEntity);
                var response = questionList[i].response;
    agent.add(`${response}`);
}
});
}
 

Я хочу вернуть «ответ», когда ввод пользователя соответствует столбцу «вопрос»:
Я хочу вернуть quot;ответquot;, когда ввод пользователя соответствует столбцу quot;вопросquot;

Комментарии:

1. База данных Firebase в реальном времени и Облачный Firestore — это две отдельные базы данных. Вы используете базу данных реального времени, а не облачный Firestore. Я уже удалил тег из вашего вопроса, но рекомендую вам также обновить свой код, чтобы удалить ссылку на Firestore в имени функции, чтобы предотвратить дальнейшую путаницу в будущем./.

Ответ №1:

В вашем коде есть несколько проблем:

  1. Под ним нет Entity узла /questions , поэтому ваш questionList всегда будет пустым.
  2. Entity Для каждого отдельного вопроса нет даже узла, поскольку он вызывается entity со строчной e буквы .
  3. Я рекомендую использовать встроенную forEach функцию Firebase для перебора дочерних узлов вместо for... in .

Итак, с этими:

 function firestore(agent) {
  var firebaseEntity = agent.parameters.firebase;
  return admin.database().ref('questions').once("value").then((snapshot) => {
    snapshot.forEach((questionSnapshot) => {
      let question = questionSnapshot.val();
      if (question.entity == firebaseEntity) {
        cont response = question.response;
        agent.add(`${response}`);
      }
    });
  });
}
 

Комментарии:

1. Я хотел ясности в строках после оператора ‘if’. Например, ‘Список вопросов [i]’ не определен.

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