Firebaseのデータベースを使用してユーザー情報を格納するWebサイトを作成しようとしています。一意のユーザー名を使用したい私は2つのインデックスを持っています。一つはユーザー用、もう一つはユーザーネーム用です。固有のユーザー名のFirebaseデータベースルール
私のデータベースは、このように構成されています
users {
$uid {
username: "username1",
gender: "xyz"
email: "xyz"
}
},
usernames {
"username1": $uid"
}
ユーザーは自分の$ uidを持つユーザー名を主張します。
これらは私のルールです:
{
"rules": {
"users": {
"$uid": {
".write": "auth !== null && auth.uid === $uid",
".read": "auth !== null && auth.uid === $uid",
"username": {
".validate": "
!root.child('usernames').child(newData.val()).exists() ||
root.child('usernames').child(newData.val()).val() == $uid"
}
}
},
"usernames" : {
".write": "!data.exists() && auth!= null",
".validate": "newData.val() == auth.uid" <---- I can't get this too work
}
}
}
それはユーザ名ので、ユーザ名インデックスをチェック$ UIDでユーザ名を設定する場合にのみ使用またはそれ自身の$ UIDを持つものではユーザ名でない記述することができます。
私は値が認証されたユーザーのuidであり、キーがユーザー名であるデータのみが必要です。私はこれを働かせることはできません。私はnewData()。val()を間違って使用していると思われます。私のvalidateステートメントが失敗しています。
私はカスタムトークンを使用しないようにしたいと思いますが、私は任意の提案に開放しています。前もって感謝します。
申し訳ありませんがこの説明があまりにも引き出されている場合、これはStackOverflowの私の2番目の投稿です。
編集#2 私は教えてもらえることからいくつかの研究を行いましたが、ドキュメントの中で.child()を.val()の前に使用する必要があることがわかりましたが、.childの代わりに.child設定されたユーザ名。
が、あなたドンそれがうまくいかないと言っていません。値に関係なく検証が失敗するか、合格に合格しますか? – cartant
私はここでカートマンと付き合っています。一見、ルールはよく見えます。何が失敗していますか?このような場合は、現在のJSON(テキストとして、スクリーンショットなし)と失敗した書き込み操作を確認するのに役立ちます。 –
明快さの欠如について申し訳ありません。私は現在、ユーザー名の検証に失敗しています。 –