私はSwiftとFirebaseが比較的新しく、特定の値を見つけるためにFirebaseデータベースに問い合わせる方法を探しています。私が開発しているアプリケーションのコンテキストでは、ユーザーがサインアップするときに、ユーザー名を選択しなければならず、他のユーザーがすでにそのユーザー名を持っていないことをデータベースで確認する必要があります。私のデータベース構造はようになります。Firebaseのクエリ(Swift)で、すべてのユーザの特定の値を見つける
はのは、私がアプリに登録していると私は私のユーザー名は「マイク」になりたいとしましょう。私はアプリは「マイク」はすでに使用されているが、私のFirebaseのコードは動作しないかどうかを確認するために、データベース内のすべての「ユーザ名」フィールドに検索したい:
let queryRef = FIRDatabase.database().reference().child("users")
queryRef.queryOrdered(byChild: "username")
.queryEqual(toValue: self.username.text)
.observeSingleEvent(of: .value, with: { snapshot in
if snapshot.exists()
{
print(snapshot)
}
})
すべて「のスナップショット」の後に」doesnの実行されなくても(命令セット上をジャンプする)。現時点では、実際のチェックを行う前に、私は「スナップショット」の値を試してみるようテストしていますが、決して印刷されません。
私はそれを照会しようとしている誰もがアクセスできるようにする「ユーザー名」キーを必要とするためように私のDBのルールを設定します。
{
"rules": {
"users": {
"$uid": {
"email": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid",
},
"username": {
".read": true,
".write": "$uid === auth.uid",
}
}
}
}
}
それは、「ユーザ名以外のプライベートのすべてを維持するために、ここで私のために重要です"キー。この例では、わかりやすくするために「電子メール」と「ユーザー名」キーしかありませんが、私の実際のアプリでは、より多くの方法(姓、名字、生年月日、電話番号など)を持っています。
Anyこの時点で助けをいただければ幸いです。 ありがとうございました