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:
。所以,我的问题是:
如果我的数据设置正确,是否可以自动创建索引?或如何使用多关键字查询?
如果我的数据设置错误,如何设置方便多关键字搜索的数据?
答案 0 :(得分:0)
它可以自动创建索引吗?
不,您不能。根据官方文档,默认情况下,Cloud Firestore会自动为现有文档中的每个单独字段创建索引。目前只能在Firebase console中手动创建文档中多个属性所需的复杂索引。
如果您需要使用多个where()
函数调用,请不要仅在订购元素时才需要索引,否则就可以很好地工作。
但是,如果发现自己处于需要以编程方式创建索引的位置,我认为应该考虑扩展数据结构(如果可能)以允许反向查找。例如,您可以通过创建blackLists
集合来复制一些数据,并在其中保存每本黑皮书的列表。