2017-08-06 3 views
0

私は映画アプリを持っています。人々は映画にコメントすることができます。firebase deleteのデータはユーザーに属します

私がチェック:

Firebase Security & Rules, How can I let users delete their own data?

https://www.firebase.com/docs/security/guide/securing-data.html#section-data-variables

https://www.firebase.com/docs/security/guide/user-security.html

をしかし、私は私の答えを見つけるcouldent。

comments { 
    550: { 
    UKs5lg...: { 
      comment: "this is comment", 
      userId: "Jkulsç122doasdjk" 
    }, 
    WfyG5Hsl...: { 
      comment: "this is comment2", 
      userId: "Jkulsç122doasdjk" 
    } 
}, 
1694: { 
    Ki5Uydmk...: { 
      comment: "movie 2 comment 1", 
      userId: "Jkulsç122doasdjk" 
    }, 
    Kovx9ox...: { 
      comment: "movie 2 comment2", 
      userId: "Jkulsç122doasdjk" 
    } 
} 

} 

データベースでは、550,1694などの数字は映画のID番号です。そして、すべての映画はあなたが見るように一意のIDを持つコメントを持っています。すべてのコメントには、コメントとuserId(このコメントを送信したユーザーのuid)のプロパティがあります。私はコメントを削除するが、私はそれを望む、ユーザーは自分のコメントを削除することができます。だから私は次のようなルールを設定したい:

{ 
    "rules": { 
    "comments": { 
     "$movieId": { 
       ".read": true, 
       ".write": ??????, 
     } 
    } 
} 
} 

私は疑問符の代わりに何を書きますか?私は次のように書きたい。

".write" : "!data.exists() || (!newData.exists() && data.child(blabla+ 'userId').val() === auth.uid)" 

が、私は子供のように一意のIDを取得する必要がありますどのように知らないので、私は書くことができません。

答えて

2

操作を実行するレベルまでルールをプッシュする必要があります。各ユーザーが自分のコメントだけを削除できるようにする必要があると言いますから、これを実行するルールはコメントに記載する必要があります:

{ 
    "rules": { 
    "comments": { 
     ".read": true, 
     "$movieId": { 
     "$commentId": { 
      ".write": "!data.exists() || (!newData.exists() && data.child('userId').val() === auth.uid)", 
     } 
     } 
    } 
    } 
} 
+0

ありがとうございます。私は実際に仕事をしなかったそのようなことを実際に試しました。それは今働く。私はどこかでミスを犯したと思う。もう一度率直に感謝します。 – escalepion

関連する問題