当 Firestore 中的多个字段排序时,startAt 和 endAt 无法正常工作

When sorting by multiple fields in Firestore with startAt and endAt not working correctly

我正在做文档过滤功能。

问题是,当我收到“max_players”和“名称”字段的过滤器时,如果有满足条件的文档,它returns一个空数组。

当有多个OrderBy时,做startAt和endAt时出现错误,我不明白原因。

技术:

服务:

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#