无法查询到正确的地方

问题描述 投票:0回答:1

除了“sellerDetails.selectedHoursByDay”之外,整个过滤操作工作正常。我无法访问 selectedHoursByDay 的子值。 DaysFilter 是一个包含日期名称的数组。

void applyFilter() async{
    Query<Map<String, dynamic>> filterquery = _firestore.collection('Users');
    

    if (nameFilter != null && nameFilter!.isNotEmpty) {
      filterquery = filterquery.where('sellerDetails.sellerName', isEqualTo: nameFilter);
    }
    if (cityFilter != null && cityFilter!.isNotEmpty) {
      filterquery = filterquery.where('sellerDetails.city', isEqualTo: cityFilter);
    }
    if (districtFilter != null && districtFilter!.isNotEmpty) {
      filterquery = filterquery.where('sellerDetails.district', isEqualTo: districtFilter);
    }
    if (daysFilter != null && daysFilter!.isNotEmpty) {
      filterquery = filterquery.where('sellerDetails.selectedHoursByDay', arrayContainsAny: daysFilter);
    }
    

    setState(() {
      _userStream = filterquery.snapshots();
    });
  }

Structure of the database

我想从 firestore 获取日期并检查它是否与 daysFilter 数组中的任何一天匹配

flutter firebase dart google-cloud-firestore
1个回答
0
投票

sellerDetails.selectedHoursByDay
根本不是一个数组。 它是一个包含其他数组嵌套字段的对象。 由于它不是数组,因此数组过滤器永远不适用于该字段。 而且您无法使用适用于文档中多个不同数组的过滤器。也许您需要重组或添加新数据来支持您想要在这些数组上应用的过滤器类型。

© www.soinside.com 2019 - 2024. All rights reserved.