Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 orderByChild查询未返回已排序的结果_Firebase - Fatal编程技术网

Firebase orderByChild查询未返回已排序的结果

Firebase orderByChild查询未返回已排序的结果,firebase,Firebase,我试图根据使用FirebaseorderByChild()函数,但查询不会经过过滤或排序返回 以下是示例数据结构: "notifications": { "001": { "member_id": "abc123", "created_at": 1424357680681, "new": true,

我试图根据使用Firebase
orderByChild()
函数,但查询不会经过过滤或排序返回

以下是示例数据结构:

"notifications": { 
  "001": { 
    "member_id":      "abc123",
    "created_at":     1424357680681,
    "new":            true,
    "first_name":     "Jon",
    "last_name":      "Snow",
    "message":        "likes your photo"
  },
  "002": { 
    "member_id":      "abc456",
    "created_at":     1424357680681,
    "new":            true,
    "first_name":     "Clark",
    "last_name":      "Kent",
    "message":        "likes your comment"
  }
}
当用户登录时,我只想在通知哈希中查询成员id与当前用户id匹配的通知

我试过两个版本,有没有“child_added”

备选方案A:

  ref.orderByChild("member_id").equalTo(memberId);
备选案文B:

  ref.orderByChild("member_id").equalTo(memberId)
    .on("child_added", function(data) { 
       console.log("new child id = " + data.key());
    });
当我查询通知散列时,查询返回所有通知的数组。它们既不限于当前用户的
成员id
,也不按
成员id
排序。(我可以完全删除member_id密钥,通知仍将返回)

我总是可以通过app中的
member\u id
过滤返回的数组,但我真的很想让查询按照文档进行


感谢您的帮助

在将相应的值存储为字符串时,您的
memberId
变量很可能是一个数字

如果将数字存储为字符串,则此查询不会给出任何结果:

ref.orderByChild("member_id").equalTo(456)
但这一次将:

ref.orderByChild("member_id").equalTo('456')
代码片段中最简单的修复方法是将memberId强制为如下字符串:

ref.orderByChild("member_id").equalTo(''+memberId)
查看此提琴查看工作示例:

我发现了问题! 我的印象是,您可以在适当的位置添加查询修饰符

我在做:

  ref.orderByChild("member_id").equalTo(memberId);
  var sync = $firebase(ref); 
实际上应该是:

  var sync = $firebase(ref.orderByChild("member_id").equalTo(memberId));

谢谢你的回答。成员id肯定是字符串,因为它们是字母数字。对不起,我对这个例子过于简化了。在这种情况下,请设置问题的复制。请随意修改我发布的小提琴,让它再现你的问题。一般来说,发布MCVE会增加我们快速帮助您的机会(请参阅)。很高兴您找到了解决方案Lena。一旦系统允许,请务必接受您的自我回答。对不起,我帮不上忙了。如果您确保下一个问题包含一个最小的、完整的、可验证的示例,那么它将对您的下一个问题非常有帮助。我通常在JSFIDLE或类似的东西中写这些,但最重要的是它再现了您的实际问题。看见