当 Firestore 中的多个字段排序时,startAt 和 endAt 无法正常工作
When sorting by multiple fields in Firestore with startAt and endAt not working correctly
我正在做文档过滤功能。
问题是,当我收到“max_players”和“名称”字段的过滤器时,如果有满足条件的文档,它returns一个空数组。
当有多个OrderBy时,做startAt和endAt时出现错误,我不明白原因。
技术:
- Angular
- Firebase - Firestore
服务:
if (filter.players != null) {
const option: string = filter.players.substring(0, 1);
if (option == '+') {
ref = ref.where('max_players', '>=', 8)
} else {
const num_players: number = parseInt(option);
ref = ref.where('max_players', '>=', num_players)
}
}
if (filter.text != null) {
if (filter.players != null) {
ref = ref.orderBy('max_players').orderBy('name').startAt(filter.text).endAt(filter.text + '\uf8ff');
}else{
ref = ref.orderBy('name').startAt(filter.text).endAt(filter.text + '\uf8ff');
}
}
Firebase 限制
文档:
https://github.com/firebase/firebase-js-sdk/issues/2577#
我正在做文档过滤功能。
问题是,当我收到“max_players”和“名称”字段的过滤器时,如果有满足条件的文档,它returns一个空数组。
当有多个OrderBy时,做startAt和endAt时出现错误,我不明白原因。
技术:
- Angular
- Firebase - Firestore
服务:
if (filter.players != null) {
const option: string = filter.players.substring(0, 1);
if (option == '+') {
ref = ref.where('max_players', '>=', 8)
} else {
const num_players: number = parseInt(option);
ref = ref.where('max_players', '>=', num_players)
}
}
if (filter.text != null) {
if (filter.players != null) {
ref = ref.orderBy('max_players').orderBy('name').startAt(filter.text).endAt(filter.text + '\uf8ff');
}else{
ref = ref.orderBy('name').startAt(filter.text).endAt(filter.text + '\uf8ff');
}
}
Firebase 限制
文档: https://github.com/firebase/firebase-js-sdk/issues/2577#