Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase Dart过滤数据_Firebase_Firebase Realtime Database_Dart - Fatal编程技术网

Firebase Dart过滤数据

Firebase Dart过滤数据,firebase,firebase-realtime-database,dart,Firebase,Firebase Realtime Database,Dart,我的数据是这样的: { "members": [ { "type": "alpha", "name": "John" }, { "type": "alpha", "name": "Jane" }, { "type": "beta", "name": "Renata" }, { "type": "beta", "name": "Richa

我的数据是这样的:

{
  "members": [
    {
      "type": "alpha",
      "name": "John"
    },
    {
      "type": "alpha",
      "name": "Jane"
    },
    {
      "type": "beta",
      "name": "Renata"
    },
      { 
      "type": "beta",
      "name": "Richard"
    }
  ]
}
如果我按以下方式访问它,我将获得所有成员的列表:

DatabaseReference ref = database().ref('members')
ref.onValue.listen((e) {
  var members = e.snapshot.val();
});
但是,如果我尝试过滤数据,如下所示,我会得到
null

DatabaseReference ref = database().ref('members').orderByValue().equalTo("alpha", "type");
ref.onValue.listen((e) {
  var members = e.snapshot.val();
});

如何仅获取具有“type”“alpha”的对象?

您的
成员
引用对应于对象的
列表
,并且
列表
中的直接子对象都不是类似
“alpha”
的字符串,因此您的
orderByValue().equalTo()
查询返回
null
。您传递的
“type”
参数正在搜索列表中的索引(
0
1
,等等),而不是子对象中的键(
“type”
“name”

相反,您可以使用
orderByChild()

如果字母不在开头,您可能会发现一个带有一些孔的
列表:

[{name: John, type: alpha}, null, {name: Jane, type: alpha}]
您可以使用删除
null

  members = new List<Object>.from(members)..remove(null);
members=new List.from(members)…remove(null);

您的
成员
引用对应于对象的
列表
,并且
列表
中的直接子项都不是类似于
“alpha”
的字符串,因此您的
orderByValue().equalTo()
查询返回
null
。您传递的
“type”
参数正在搜索列表中的索引(
0
1
,等等),而不是子对象中的键(
“type”
“name”

相反,您可以使用
orderByChild()

如果字母不在开头,您可能会发现一个带有一些孔的
列表:

[{name: John, type: alpha}, null, {name: Jane, type: alpha}]
您可以使用删除
null

  members = new List<Object>.from(members)..remove(null);
members=new List.from(members)…remove(null);