firebase - 在阅读列表之间通过 Dialogflow-fulfillment 请求许可
问题描述
我正在创建一个代理,它可以从数据库(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 请求许可,然后根据用户给出的响应继续列表?请写信以获得任何澄清。
解决方案
您必须结合使用 orderByValue()/orderByChild()、limitToFirst() 和 startAt() 方法来限制返回给您的记录数。
orderByValue()/orderByChild() 将需要一个属性/子项来定义您希望项目显示的顺序。
limitToFirst() 将决定您希望在每次调用中获得多少行
startAt() 将需要您正在排序的字段的值,并且每次请求下一组行时都必须更新。
您可以在此处阅读有关这些方法的更多信息
推荐阅读
- jquery - ajax 每次都从数据库中获取相同的数据
- pdf-generation - 使用 jasper 软件版本 6.13.0 创建的 pdf 文件中看不到日语内容
- java - Intellij IDEA 不构建 maven 项目
- unity3d - 为什么 Unity 给我构建错误
- elasticsearch - 使用 Apache NIfi 将数据从 RDBMS 迁移到 ElasticSearch
- angular - 如何从角度9中的当前日期减去一天
- reactjs - 反应 + 码头工人 + Nginx
- ios - Xcode 11.5 - 分段错误 11
- java - 动态 switch-case - 基于文本的 RPG
- reactjs - 使用 React js 计算学生成绩错误