我试图检查用户名是否存在。当我拨打queryOrderedBychild
时,快照值始终可用,但会打印我的整个数据库,而不仅仅是我请求的数据queryOrderby
。当我打电话给queryEqualToValue
时,它总是返回null。我已经尝试了很多方法来弄明白。检查用户名是否已存在:Swift,Firebase
这是我的代码:
DataService.instance.UsersRef.queryOrdered(byChild:"Nickname").queryEqual(toValue: "kai1004pro").observe(.value, with: { (snapshot) in
if (snapshot.value is NSNull) {
print("not found")
} else {
print("found")
print(snapshot.value)
}
})
这是我的JSON树:
Optional({
g50X0FvEsSO4L457v7NzS3dAABl1 = {
"User Profile" = {
Birthday = "Sep 20, 1992";
Gender = Female;
Nickname = kai1004pro;
UserUID = g50X0FvEsSO4L457v7NzS3dAABl1;
emailAddress = "[email protected]";
isFollow = 0;
isFriend = 0;
};
};
})
这是安全规则:
"rules": {
".read": true,
".write": "auth != null",
"Users": {
".read": true,
".write": "auth != null",
".indexOn": ["Nickname", "User Profile"]
}
}
}
你是什么UsersRef?我的猜测是它在这种情况下链接到用户ID(g50X0FvEsSO4L457v7NzS3dAABl1),并且昵称不是它的直接子项,所以它从来没有找到它,因为它没有在正确的位置搜索。当我经历这个时,我还记得在通过子节点进行搜索时遇到.value问题,我使用.ChildAdded和.ChildChanged代替我相信。 – Dallas