Firebase orderByChild查询未返回已排序的结果
我试图根据使用FirebaseFirebase orderByChild查询未返回已排序的结果,firebase,Firebase,我试图根据使用FirebaseorderByChild()函数,但查询不会经过过滤或排序返回 以下是示例数据结构: "notifications": { "001": { "member_id": "abc123", "created_at": 1424357680681, "new": true,
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或类似的东西中写这些,但最重要的是它再现了您的实际问题。看见