2017-04-14 13 views
0

ファイアベースデータベースにデータを送信することが可能かどうかを知りたかったのですが、これは検証にのみ使用され、保存されません。 たとえば、{"myauth": "abc123"}を送信すると、検証ルールはnewdata.child( "myauth")。equals( "abc123")とデータベースに保存されていないかどうかをチェックします。私は、そのノードにデータを送信するたびにFirebaseデータベース検証のためだけに情報を送信し、データベースに保存しないでください

{ 
    "rules": { 
    ".validate": "newData.child('myauth').val() === 'abc123'", 
    ".read": true, 
    ".write": true  
    } 
} 

ようなので、それが書き込まれる、検証は子MYAUTHをチェックすると、値が「ABC123」に等しい場合にのみ、その後の書き込み動作を進めるが、ではありませんmyauth変数をデータベースに保存します。データをデータベースに保存するのは簡単な回避策ですが、これは可能ですか?

答えて

0

実際の書き込み操作を行わずに.writeのルールをトリガーする方法はありません。しかし、ちょうどあなたの "検証テスター"として1つの子ノードを宣言し、そこに書き込むだけの場合。

+0

これは、すべての書込み要求をプレースホルダとして使用するmyauth値を使用していますか?それは大規模なソリューションから見て過剰なものでしょうか?私はアンドロイドに取り組んでいます。 –

+0

セキュリティルールはサーバー上でのみ実行されます。したがって、何を問わずデータを送信する必要があります。実際にデータベースに書き込むかどうかは、それに比べてかなり小さいです。最高のユーザーエクスペリエンスを実現するには:まず、無効な入力を防ぐ(たとえば、テキストフィールドの代わりにドロップダウンを使用する)ようにしてから、入力*をサーバーに送信する前に検証してから、サーバー側のルールに頼ってミスや不正なユーザー。セキュリティルールは、データの整合性/許可されたアクセスを保証するためのものであり、良好なユーザーエクスペリエンスを保証するものではありません。 –

関連する問題