0

我正在创建一个代理,它可以从数据库(Firebase 上的实时数据库)中读取数据列表。通过上下文和参数,我可以触发 webhook 并获取我想要的数据。

但是因为结果是一个List,所以输出的文本会太长,不能一次性说出所有的数据,所以我想每次从列表中返回一个孩子,问用户“你想看下一节吗?” . 如果用户说“是”,我将继续阅读直到最后。如果用户说“不”,我会触发一个事件。

对于循环我使用这个:

ref.once('value', function(snapshot) {
   snapshot.forEach(function(childSnapshot) {
   var childKey = childSnapshot.key;
   var childData = childSnapshot.val();
   // ...
  });
});

https://firebase.google.com/docs/database/web/lists-of-data#listen_for_value_events

但这会将列表中的所有数据合二为一。如何输出一个数据并请求用户许可,然后继续列表中的下一个数据?我的问题是如何在阅读列表之间通过 Dialogflow-fulfillment 请求许可,然后根据用户给出的响应继续列表?请写信以获得任何澄清。

4

1 回答 1

1

您必须结合使用 orderByValue()/orderByChild()、limitToFirst() 和 startAt() 方法来限制返回给您的记录数。

orderByValue()/orderByChild() 将需要一个属性/子项来定义您希望项目显示的顺序。

limitToFirst() 将决定您希望在每次调用中获得多少行

startAt() 将需要您正在排序的字段的值,并且每次请求下一组行时都必须更新。

您可以在此处阅读有关这些方法的更多信息

于 2018-12-05T13:59:26.753 回答