0

私はIn firebase, can I set permissions to allow only PUSH operations to a given object?を読んでこれまでコピーしましたが動作しません。Firebase:リスト以外のすべての.pushを防ぎます

私は匿名で使用されているサイトを持ち、コメントを収集しています。私は追加する新しいものを保存したいが、既存のデータの編集と削除を防ぐ。 AngularFire2

export class FirebaseService { 

    comments: FirebaseListObservable<Object>; 
    locations: FirebaseListObservable<Object>; 

    constructor(private af: AngularFire) { 
     this.comments = this.af.database.list(environment.stem + '/comments');  
    } 

    addComment(comment) { 
    return this.comments.push(comment) 
     .catch(err => console.error(err)); 
    } 
} 

と、2角度

私がプッシュする場合には、既存のデータは存在しませんように、このルールはそれを行うだろうと予想?

{ 
    "rules": { 
    ".read": true, 
    ".write": "!data.exists()" 
    } 
} 

書き込みルールをtrueに設定すると、うまく動作しますが、ほほえります。ここで

は、データベースのこのルートでは、既存のJSONの始まり(ここではキーは私が離れてから移行していますサービスから来る)あなたの現在のルールでは

{ 
    "0763a8d3e2407697" : { 
    "comment" : "Thanks for your comments and feedback, Simon", 
    "date" : "Sat Jan 03 2015 08:46:17 GMT+0100 (CET)" 
    },... 
+0

拒否する操作のコードを許可したい*と* *のコードを追加できますか?また、場所に既存のJSONを追加してください(テキストとして、スクリーンショットはありません)。 –

+0

@FrankvanPuffelen更新された質問を見る –

答えて

1

あり、データベースサーバは拒否しますと入力すると、のデータがデータベースに存在します。

しかし、あなたのユースケースは、特定の既存のコメントを上書きする書き込みを拒否したいだけのようです。そのユースケースの場合、あなたは木に.writeルール下に置く必要があります。

{ 
    "rules": { 
    ".read": true, 
    "$stemid": { 
     "comments": { 
     "$commentid": { 
      ".write": "!data.exists() && newData.exists()" 
     } 
     } 
    } 
    } 
} 

これらのルールuse $ variables彼らはすべての茎とすべてのコメント全体に適用されます保証します。

関連する問題