您好我正在使用firebase构建应用程序,这是我的firebase模型:
按名称搜索用户的代码:
exports.findByUsername = function (username, cb) {
ref.orderByChild("username")
.equalTo(username)
.once("value", function (snapshot) {
records = snapshot.val();
if (records === null) {
return cb(null, null);
}
return cb(null, records);
});
};
我希望在寻找第一个用户时收到一个对象:
[ 1 ,
{ clubID: 4,
displayName: 'Jack',
email: 'jack@example.com',
id: 1,
password: 'vasa',
token: 1,
username: 'jack' } ]
但是我得到了
[ ,
{ clubID: 4,
displayName: 'Jack',
email: 'jack@example.com',
id: 1,
password: 'vasa',
token: 1,
username: 'jack' } ]
有什么问题?在寻找第二个用户时,一切都很好。
答案 0 :(得分:1)
您使用数字键(1,2,3等)存储您的用户信息。执行此操作时,Firebase SDK可能会尝试将结果转换为数组。有关何时执行此操作的说明,请参阅我们的博文Best Practices: Arrays in Firebase。
底线是:不要对Firebase中的项目使用数字,顺序键。代替:
由于您正在存储用户,因此通常的做法是使用每个用户的UID作为其密钥。
但由于您的用户ID看起来不像Firebase身份验证UID,因此可能会出现同样的问题。在这种情况下,可以继续使用当前的密钥,但在这种情况下,请使用字符串作为前缀,以防止SDK的阵列强制。所以:
"Users": {
"User1": {
...
}
"User2": {
...
}
}