如果我查询我的users
集合并按2个不同的属性进行过滤(如下所示),它将返回预期的数据。
return this.afs
.collection<Employee>('users', ref => {
return ref
.where('accountId', '==', accountId)
.where('isEmployee', '==', true);
})
.valueChanges()
但是,如果我尝试按name
排序数据,如下所示,它将返回一个空数组。
return this.afs
.collection<Employee>('users', ref => {
return ref
.where('accountId', '==', accountId)
.where('isEmployee', '==', true)
.orderBy('name');
})
.valueChanges()
我认为我必须管理索引的处理方式,但做了一些研究,我的理解是,如果是这种情况,我会在控制台中收到一条错误消息,其中包含用于设置复合索引的链接我需要的索引。我没有任何错误,只是一个空数组。我究竟做错了什么?是否可以订购按2个属性过滤的数据集合?我相信我使用的是Firebase 6.5版,但愿意更新是否可以解决我的问题。
答案 0 :(得分:1)
我会在控制台中看到一条错误消息,其中包含一个链接,用于设置所需的复合索引。
是的,这是正确的。当您使用类似查询的查询时,控制台中应显示一条警告消息。
我没有任何错误,只是一个空数组。
在这种情况下,您应该在Firebase console中手动创建该索引。
是否可以订购按2个属性过滤的数据集合?
可以。只需创建所需的索引,然后您应该能够执行查询。
答案 1 :(得分:0)
您似乎并没有准备好抓住错误。可能想做类似的事情:
.catch(错误=> console.log(错误)
(在台式机上会格式化)