#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}`);
}
});
}
Я хочу вернуть «ответ», когда ввод пользователя соответствует столбцу «вопрос»:
Комментарии:
1. База данных Firebase в реальном времени и Облачный Firestore — это две отдельные базы данных. Вы используете базу данных реального времени, а не облачный Firestore. Я уже удалил тег из вашего вопроса, но рекомендую вам также обновить свой код, чтобы удалить ссылку на Firestore в имени функции, чтобы предотвратить дальнейшую путаницу в будущем./.
Ответ №1:
В вашем коде есть несколько проблем:
- Под ним нет
Entity
узла/questions
, поэтому вашquestionList
всегда будет пустым. Entity
Для каждого отдельного вопроса нет даже узла, поскольку он вызываетсяentity
со строчнойe
буквы .- Я рекомендую использовать встроенную
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. Я также исправил эту синтаксическую ошибку. Пожалуйста, попробуйте исправить другие небольшие проблемы самостоятельно, прежде чем публиковать, поскольку здесь ожидается некоторая самодостаточность.