我的数据 struct 是这样的,在我的Ffltter应用程序的FireBase数据库中是这样的

...
"search" : {
   "titles" : {
       "title0" : {
           "Likes" : 3
        }
        "title1" : {
           "Likes" : 5
        }
        "title2" : {
           "Likes" : 9
        }
   }
}
...

我希望我的"标题"按"赞"的数量排序,但这不起作用,并给出以下错误:

final firebase = FirebaseDatabase.instance
        .ref('search/titles')
        .orderByChild('Likes');
final snapshot = await firebase.get();

enter image description here

这很奇怪,因为我的 firebase 基地规则是开放的

{
  "rules": {
      ".read": true,
      ".write": true
  }
}

如果不是orderByChild(),我把orderByKey()它完美的作品,所以我一无所知,因为规则是开放的,没有什么应该阻止orderByChild(...).

如果我放orderByValue(),它也不起作用.

为什么只有orderByKey()起作用,而不是orderByChild(...)orderByValue()

如果我用"orderByKey()"代替"orderByChild()",它就能很好地工作,但这不是我想要的,因为它按名称对我的标题进行排序

推荐答案

我无法重现这个问题.

当我在Zapp.run中设置一个最小重现时,请使用以下代码:

final db = FirebaseDatabase.instance.ref('77820695/titles');
final snapshot = await db.orderByChild('likes').get();
for (var child in snapshot.children) {
  print(child.key);
}

它打印:

[07:30:03] title0
[07:30:03] title1
[07:30:03] title2

代码中的77820695是我为数据库中的 node 命名的名称,下面是我为该 node 设置规则的方式:

"77820695": { 
  ".read": true, 
  "titles": { 
    ".indexOn": "likes" 
  } 
},

您可以在此处找到工作示例:https://zapp.run/edit/flutter-zv2g06rlv2h0

如果问题仍然存在,您能在出现错误的地方创建一个类似的Zapp.run实例吗?

Flutter相关问答推荐

Flutter ReorderableListView在可滚动父级中无法完美工作

无法在主屏幕视图中设置当前日期容器'

自定义ItemBuilderFlutter

为什么Riverpod生成器在这种情况下不生成AsyncNotiator?

为什么Flutter 翼扩展卡有上下边框?

使用Future函数的容器中未显示图像,但在使用图像小工具时显示

如何从文本比例因子迁移到文本比例因子

在Flutter 中创建自定义形状

StateNotifer正在riverpod中提供初始状态值(bool)

flutter Listview构建器溢出

如何在Flutter 中使用选定的键和值从 map 列表创建 map

尽管海拔设置为 0,如何删除 appBar 下的下划线

面对Flutter 中的行和列问题

使用 Riverpod 和 copyWith 方法更新数据类中列表中变量的值

为什么 Flutter riverpod 直接分配不起作用但方法可以

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

在 flutter 中使用 Firebase 实时数据库数据创建无限滚动效果

出现错误;运算符[]不是为对象类型定义的?功能()'

Flutter 小部件中的视图和逻辑分离

Flutter ListView builder 未使用新数据更新