为了账号安全,请及时绑定邮箱和手机立即绑定

使用 orderby 进行 firebase firestore 多个查询

使用 orderby 进行 firebase firestore 多个查询

慕姐8265434 2021-08-20 14:38:47
var book = {     name: 'AAA',     color: 'black',     material: 'leather',     pages: '50',     style: 'love',     query: {          AAA: true,          black: true,          leather: true,          50: true,          love: true,     }}这是我在firestore文档中设置的。代码将.where(query.keyword, "==", true)根据用户输入的关键字数量进行附加。像用户输入一样black leather,代码将是:firestore.collection('books').where(query.black, "==", true).where(query.leather, "==", true)最后将添加.orderBy('update', 'desc')到列表书籍。准确性取决于关键字数量。但是代码改变了,以前从未使用过,我会被要求先设置索引。如果我不先设置索引,我会得到FirebaseError: The query requires an index. You can create it here:. 所以,我的问题是:如果我的数据设置正确,它可以自动创建索引吗?或者如何用多关键字查询?如果我的数据设置错误,如何设置方便多关键字搜索的数据?
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

它可以自动创建索引吗?

不,你不能。根据官方文档,默认情况下 Cloud Firestore 会自动为现有文档中的每个单独字段创建索引。文档中多个属性所需的复杂索引,目前只能在Firebase 控制台中手动创建。

如果您需要使用多个where()函数调用,请不要仅在您订购元素时才需要索引,否则将工作得很好。

但是,如果您发现自己处于需要以编程方式创建索引的位置,我认为您应该考虑扩充数据结构(如果可能)以允许反向查找。例如,您可以通过创建一个blackLists集合来复制一些数据,您可以在其中保存每个黑皮书的列表。


查看完整回答
反对 回复 2021-08-20
  • 1 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信