Firebase orderByChild 查询不返回有序结果
Firebase orderByChild query not returning ordered results
我正尝试根据 documentation example 使用 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"
}
}
当用户登录时,我想查询通知哈希,只查询 member_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());
});
当我查询通知哈希时,查询 returns 所有通知的数组。它们既不限于当前用户的member_id
,也不按member_id
排序。 (我可以完全删除 member_id 键,通知仍然会返回)。
我总是可以通过 member_id
应用程序内过滤返回的数组,但我真的很想根据文档进行查询。
感谢任何帮助!
您的 memberId
变量很可能是一个数字,而您将相应的值存储为字符串。
如果您将数字存储为字符串,此查询将不会给出任何结果:
ref.orderByChild("member_id").equalTo(456)
但是这个会:
ref.orderByChild("member_id").equalTo('456')
代码片段中最简单的修复方法是将 memberId 强制转换为如下字符串:
ref.orderByChild("member_id").equalTo(''+memberId)
查看此 fiddle 工作示例:http://jsfiddle.net/695rf0vy/
我找到问题了!
我的印象是您可以在适当的位置添加查询修饰符。
我在做:
ref.orderByChild("member_id").equalTo(memberId);
var sync = $firebase(ref);
实际上应该是:
var sync = $firebase(ref.orderByChild("member_id").equalTo(memberId));
我正尝试根据 documentation example 使用 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"
}
}
当用户登录时,我想查询通知哈希,只查询 member_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());
});
当我查询通知哈希时,查询 returns 所有通知的数组。它们既不限于当前用户的member_id
,也不按member_id
排序。 (我可以完全删除 member_id 键,通知仍然会返回)。
我总是可以通过 member_id
应用程序内过滤返回的数组,但我真的很想根据文档进行查询。
感谢任何帮助!
您的 memberId
变量很可能是一个数字,而您将相应的值存储为字符串。
如果您将数字存储为字符串,此查询将不会给出任何结果:
ref.orderByChild("member_id").equalTo(456)
但是这个会:
ref.orderByChild("member_id").equalTo('456')
代码片段中最简单的修复方法是将 memberId 强制转换为如下字符串:
ref.orderByChild("member_id").equalTo(''+memberId)
查看此 fiddle 工作示例:http://jsfiddle.net/695rf0vy/
我找到问题了! 我的印象是您可以在适当的位置添加查询修饰符。
我在做:
ref.orderByChild("member_id").equalTo(memberId);
var sync = $firebase(ref);
实际上应该是:
var sync = $firebase(ref.orderByChild("member_id").equalTo(memberId));