firebase - 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 上的数据显示如下: 而且我得到的顺序也不是插入数据的时间顺序。我很迷茫,谢谢你的时间:)
解决方案
推荐阅读
- c - 在 C 中打印字符串中的字符时出现分段错误
- c++ - 需要一个正态分布的随机数生成器
- c# - 如果第一个链接不可用,我如何加载另一个链接?在c#中
- php - 我面临一个无法修复的错误 - 商店网站中的 Buy_Item
- php - 如何在一个 SQL 表中创建无限类别子项
- google-chrome - 使用 Chrome 扩展删除所有 CSP 标头以允许 iframe
- asp.net - ASP.net 找不到资源。重定向到不应重定向到的页面
- powershell - 如何使用需要从命令提示符/批处理文件中引用的参数调用 PowerShell Start-Process 命令?
- android - 向列表视图添加第二个过滤器
- python - 用相同的键计算过去的条目