0

Firebase Simulatorでこれを動作させることはできませんが、その理由を理解できません。私は自分のページにお気に入りのボタンを作っていて、お気に入りの時間を記録しているカウンターを持っています。私はその量をfirebaseデータベースに保存したいと思います。だからここに私のルールがあります:Firebaseが規則の正規表現を検証しない

{ 
    "rules": { 
    "favorited": { 
     ".validate": "newData.isNumber() && newData.val().matches(/[0-9]/) && newData.val().length < 10", 
     ".read": true, 
     ".write": true 
    } 
    } 
} 

書き込みは、0〜9までしか10文字未満でなければなりません。

私は、次のパスで次のJSONデータでそれをテストしてみた:

/favorited/ 

-

{ 
    "foo": 123 
} 

これは、検証に書き込みエラーが発生します。私は間違って何をしていますか?

答えて

2

問題は、数字ではなく文字列で正規表現を使用していることです。数字にはlengthというプロパティもありません。 documentationから

正規表現リテラルは、クライアントの提供された文字列を検証するために使用することができます。文字列が正規表現パターンに従っているかどうかを調べるには、string.matches(/pattern/)を使用してください。

あなたは使用することができます1000000000として

newData.isNumber() && newData.val() < 1000000000 

は、その中に10桁の最小数です。

+0

わかりました。しかし、これでもまだ私に書き込みエラーが表示されます: http://baasdesign.nl/images/firebase.png また、この番号も今でも数字にする必要がありますか? –

+0

これは、 '{" templateFavorite ":123}'というオブジェクトを作成していて、 'isNumber'の検証に失敗したためです。 '123'のような数字を書くか、' templateFavorite'子を含むようにルールを更新してみてください。 – cartant

+0

すごく、今私は間違っていたことを理解しています。ありがとうございました! –