ユーザ名が存在するかどうかを確認しようとしています。 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