使用 orderby 进行 firebase firestore 多个查询

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:. 所以,我的问题是:


如果我的数据设置正确,它可以自动创建索引吗?或者如何用多关键字查询?


如果我的数据设置错误,如何设置方便多关键字搜索的数据?


慕姐8265434
浏览 221回答 1
1回答

POPMUISE

它可以自动创建索引吗?不,你不能。根据官方文档,默认情况下 Cloud Firestore 会自动为现有文档中的每个单独字段创建索引。文档中多个属性所需的复杂索引,目前只能在Firebase 控制台中手动创建。如果您需要使用多个where()函数调用,请不要仅在您订购元素时才需要索引,否则将工作得很好。但是,如果您发现自己处于需要以编程方式创建索引的位置,我认为您应该考虑扩充数据结构(如果可能)以允许反向查找。例如,您可以通过创建一个blackLists集合来复制一些数据,您可以在其中保存每个黑皮书的列表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript