我正在尝试在我拥有的Firebase数据库中获取女性比赛时间的列表。我的数据库结构可能不正确,但是我看不到为什么我的工作无法正常工作。
我正在尝试获取女性用户列表,然后检查与任何女性uid匹配的最快时间。但是我坚持参加桌子。
我的数据库和代码如下:
var userref = rootref.child("Users");
var raceref = rootref.child('Races');
userref.orderByChild("Gender").equalTo('Female').on("child_added", function(snapshot) {
console.log(snapshot.key);
raceref.orderByChild("uid").equalTo(snapshot.key).once("child_added", function(raceshot) {
console.log(raceshot.key);
});
});
然后,控制台仅显示snapshot.key
,而不显示raceshot.key
:
-864646859
-305907999
如果我手动输入snapshot.key
中的数字,那么raceshot.key
确实会显示在控制台中。我没有收到任何错误,所以我对为什么不能对equalTo使用snapshot.key
感到困惑。
答案 0 :(得分:0)
快照的定义是一个字符串,因此/Users/$id
中的$id
值是字符串。但是,在/Races/$raceid/uid
属性中,您将值存储为数字。
我的感觉是,该类型的比较失败。如果确实是这个原因,您应该可以通过将密钥转换为数字来解决它:
userref.orderByChild("Gender").equalTo('Female').on("child_added", function(snapshot) {
console.log(snapshot.key);
raceref.orderByChild("uid").equalTo(parseInt(snapshot.key)).once("child_added", function(raceshot) {
console.log(raceshot.key);
});
});