首页 > 解决方案 > Flutter Firebase RealTime Databasee 无法使用 OrderByChild() 正确排序

问题描述

我正在使用 Firebase 实时数据库的 Android 应用程序工作。

目前我正在尝试进行此查询:

List<EmployeeData> employee = await enterpriseRef.child(enterprise).child('employees').orderByChild("surname").once().then((DataSnapshot snapshot){
    print("snapshot value ${snapshot.value}");
    List<EmployeeData> list = new List<EmployeeData>();
    snapshot.value.forEach((k,v){
      list.add(EmployeeData(
        id: k ?? '',
        name: v['name'] ?? '',
        surname: v['surname'] ?? '',
        price: v['price'] == null ? 0.0 : v['price'].toDouble(),
        priceExtra: v['price_extra'] == null ? 0.0 : v['price_extra'].toDouble(),
        priceNight: v['price_night'] == null ? 0.0 : v['price_night'].toDouble(),
        priceHoliday: v['price_holiday'] == null ? 0.0 : v['price_holiday'].toDouble(),
      ));
    });
    return list;
  });

我正确地获取了数据,但显然顺序是随机的。print("snapshot value ${snapshot.value}") 给了我这个:

快照值 {192: {price_holiday: 0.0, price: 0.0, surname: Tirado Sanchez, name: Adrià, price_extra: 0.0, price_night: 0.0}, 196: {price_holiday: 0.0, price: 0.0, surname: Gonzalez Navarro, name: Javier,price_extra:0.0,price_night:0.0},230:{姓:Cantón Casado,姓名:Rubén},198:{price_holiday:0.0,价格:0.0,姓:Martinez Barreiro,姓名:Marta,price_extra:0.0,price_night: 0.0}, 232: {price_holiday: 0.0, price: 0.0, surname: Miranda Muñoz, name: Jose Luis, price_extra: 0.0, price_night: 0.0}, 233: {price_holiday: 0.0, price: 0.0, surname: Calvo Calle, name : Amador, price_extra: 0.0, price_night: 0.0}, 234: {price_holiday: 0.0, price: 0.0, surname: Pedraza Cucala, name: Adrian, price_extra: 0.0, price_night: 0.0}, 114: {price_holiday: 0.0, price: 0.0,姓:Dominguez Malonda,姓名:Xavier,price_extra:0.0,price_night:0。0}, 235: {price_holiday: 0.0, price: 0.0, surname: Rodriguez Jimenez, name: Raul, price_extra: 0.0, price_night: 0.0},

数据不是按“姓”排序的,也不是按键值排序的。如您所见,键值的顺序为 192、196、230、198、232、233、234、114 ......这与删除 .orderByChild("surname") 或更改值时得到的顺序完全相同查询中的“姓氏”字符串。Firebase 控制台 UI 上的数据显示如下: 在此处输入图像描述 而且我得到的顺序也不是插入数据的时间顺序。我很迷茫,谢谢你的时间:)

标签: firebaseflutterfirebase-realtime-databasedart

解决方案


推荐阅读