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 回答
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
POPMUISE
TA贡献1765条经验 获得超5个赞
它可以自动创建索引吗?
不,你不能。根据官方文档,默认情况下 Cloud Firestore 会自动为现有文档中的每个单独字段创建索引。文档中多个属性所需的复杂索引,目前只能在Firebase 控制台中手动创建。
如果您需要使用多个where()
函数调用,请不要仅在您订购元素时才需要索引,否则将工作得很好。
但是,如果您发现自己处于需要以编程方式创建索引的位置,我认为您应该考虑扩充数据结构(如果可能)以允许反向查找。例如,您可以通过创建一个blackLists
集合来复制一些数据,您可以在其中保存每个黑皮书的列表。
添加回答
举报
0/150
提交
取消