【发布时间】:2018-10-08 23:05:05
【问题描述】:
我有一个动态构造的 Firestore 查询,如下所示:
let db = firebase.firestore().collection('vehData')
if (this.filters.model.selected) {
db = db.where('Model', '==', this.filters.model.selected)
}
if (this.filters.condition.selected) {
db = db.where('TitleStatus', '==', this.filters.condition.selected)
}
if (this.filters.year.selected) {
db = db.where('Year', '==', this.filters.year.selected)
}
if (this.filters.autopilot.selected) {
db = db.where('Autopilot', '==', this.filters.autopilot.selected)
}
if (this.filters.battery.selected) {
db = db.where('Battery', '==', this.filters.battery.selected)
}
if (this.filters.sortBy.selected) {
db = db.orderBy(this.filters.sortBy.selected, this.filters.sortBy.ascOrDesc)
}
db.limit(200).get().then((querySnapshot) => { ... })
this.filters 只是一组选择输入的数据模型。
然而,问题是 Firebase 坚持我为上述查询的每一个变体都设置了一个复合索引,例如:
Model ASC TitleStatus ASC 或 Model ASC TitleStatus ASC Year ASC 或 Model ASC TitleStatus ASC Year ASC Autopilot ASC
为每个场景/可能的过滤器组合创建索引显然不是一种选择,有没有人有任何关于如何绕过这个限制的提示?
【问题讨论】:
标签: javascript firebase google-cloud-firestore