这个问题已经有了答案:
Cloud Firestore Case Insensitive Sorting Using Query
2个答案
你能告诉我如何在firestore上进行不区分大小写的查询吗?
例如,Hallway
和hallway
两者必须相同。但下面的查询是精确搜索。也就是说,如果db有Hallway
并且我试图搜索hallway
,那么它会显示no records
。
getSpecificTempBudgetGroup(name: string): AngularFirestoreCollection<BudgetGroup> {
return this.fireStore.collection<BudgetGroup>(`members/${this.authenticationProvider.member.id}/budgetGroups`, ref => ref
.where('name', '==', name)
);
}
我也试过使用
toLowerCase()
。但运气不好:(有线索吗?getSpecificTempBudgetGroup(name: string): AngularFirestoreCollection<BudgetGroup> {
return this.fireStore.collection<BudgetGroup>(`members/${this.authenticationProvider.member.id}/budgetGroups`, ref => ref
.where('name.toLowerCase()', '==', name.toLowerCase())
);
}
注:我也看到了可能的重复答案。但它并没有给我的用例带来那么多的想法。但我在下面提到的MongoDB中得到了有用的信息。
最佳答案
我已经在db上创建了一个属性,比如solowerCaseName
,然后更改了我的查询,如下所示。我从this MongoDB answer中得到了这个解决方案的灵感。
getSpecificTempBudgetGroup(name: string): AngularFirestoreCollection<BudgetGroup> {
return this.fireStore.collection<BudgetGroup>(`members/${this.authenticationProvider.member.id}/budgetGroups`, ref => ref
.where('lowerCaseName', '==', name.toLowerCase())
);
}