gpt4 book ai didi

javascript - Dialogflow 到 firestore 内联编辑器 javascript : sorting and filtering on different parameters of collection

转载 作者:行者123 更新时间:2023-12-02 22:29:35 25 4
gpt4 key购买 nike

我在 Google Cloud Firestore 中有一个数据库,其中包含一组文档,每个文档都包含以下参数:国家/地区、标题、URL、日期。

我需要根据 Dialogflow 中的输入返回两个单独的内容。第一个是最新 3 条新闻的头条,第二条是法国最新 3 条新闻的头条。我要在 Dialogflows 内联编辑器(即 javascript)中执行此操作,但它似乎与 javascript 并不完全相同,例如在节点中。

我已经用以下代码解决了第一个问题:

function TopNews_Global(agent) {
agent.add('Here are the latest Global news');

let documents = db.orderBy('Date', 'desc').limit(3);
return documents.get()
.then(snapshot => {
snapshot.forEach(doc => {
agent.add('-' + doc.data().Headline + '.');
agent.add('Link:(' + doc.data().URL + ')');
});
return Promise.resolve('Read complete');
}).catch(() => {
agent.add('Error reading entry from the Firestore database.');
});
}

其中 db 是我在 firebase 中的集合。以下代码是我要返回的第二件事的解决方案,这就是我陷入困境的地方。不可能像我一样对两个不同的字段进行过滤和排序。但一定有办法解决这个问题 - 这是我想做的一件非常简单的事情。

https://firebase.google.com/docs/firestore/manage-data/export-import

function TopNews_France(agent) {
agent.add('Here are the latest French news');

let documents = db.orderBy('Date', 'desc').where('Country', '==', 'France').limit(3);
return documents.get()
.then(snapshot => {
snapshot.forEach(doc => {
agent.add('-' + doc.data().Headline + '.');
agent.add('Link:(' + doc.data().URL + ')');

});
return Promise.resolve('Read complete');
}).catch(() => {
agent.add('Error reading entry from the Firestore database.');
});
}

最佳答案

假设正如您所说,db 是一个集合对象,您的查询对于 Firestore 来说是有效的。

db.orderBy('Date', 'desc').where('Country', '==', 'France').limit(3);

Firestore 确实允许跨多个字段进行查询,假设唯一的 orderBy 或范围查询位于同一字段。因此,您的查询 is valid (不同字段上有一个 orderBy 和一个非范围 where)。

您没有提及您遇到的错误,但我怀疑是这样的(名义上在 Javascript 控制台中可见):

The query requires an index. You can create it here: (url)

那是因为这是一个 query which requires a composite index -- 它对一个字段进行排序并在另一字段进行过滤。

因此,要解决此问题,您只需创建索引即可。在理想情况下,您只需单击该错误消息中的 URL 即可转到 Firebase 控制台中的确切位置,以创建您需要的确切索引。如果由于某种原因您需要手动创建它,您也可以这样做 through the console 。完成构建后,您的查询应该可以运行。

在这种情况下,您需要为db指向的任何集合创建一个索引,其中包含字段Date(按降序排列)和Country (无论是降序还是升序——相等性并不重要),并且具有集合范围。

关于javascript - Dialogflow 到 firestore 内联编辑器 javascript : sorting and filtering on different parameters of collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58954599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com