Как я могу пройти через firebase потомков случайных идентификаторов?(NodeJs) - PullRequest
0 голосов
/ 04 июня 2019

Я хочу пройти через дочерние значения сгенерированных случайных идентификаторов. По-видимому, я хочу проверить, совпадает ли имя продукта с запрошенным именем not. Я видел решение для Java, но не смог найти решение для NodeJ.

Это то, что я пробовал, но он возвращает только exp_date самого верхнего случайного идентификатора.

app.intent('getDate',(conv,{foodname})=>{
  return admin.database().ref("/users/${conv.user.id}").once('child_added',function(snapshot){
        conv.ask("${snapshot.val().exp_date}");

  });
});

1 Ответ

0 голосов
/ 04 июня 2019

Вы сейчас подключаете слушателя к /users/${conv.user.id}, который слушает .once('child_added'. Таким образом, ваш обратный вызов вызывается со снимком первого дочернего элемента в /users/${conv.user.id}. Если вы хотите, чтобы все дети находились под /users/${conv.user.id}, вы можете сделать что-то вроде:

app.intent('getDate',(conv,{foodname})=>{
    return admin.database().ref(`/users/${conv.user.id}`).once('value',function(snapshot){
        var msg = '';
        snapshot.forEach(function(child) {
            msg = msg + child.val().exp_date;
        });
        conv.ask(msg);
    });
});

Итак, это:

  1. Использует буквальные обратные ноты вокруг /users/${conv.user.id}, так как вы используете строки шаблона.
  2. Прослушивает событие value, что означает, что вы запускаетесь с одним снимком для всех дочерних узлов в /users/${conv.user.id}
  3. Зацикливает все эти совпадающие дочерние узлы с snapshot.forEach().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...