2017-04-10 178 views
0

我有用戶查詢看起來是這樣的:包括[用戶名] [UID] enter image description here火力地堡規則驗證失敗

我想使用戶名只包含字符和數字。

"user_lookup": { 
    ".read": "auth !== null", 
    "$username": { 
    ".write": "!data.exists()", 
    ".validate": " 
     newData.val().matches(/^[a-z][a-z0-9]*([._-][a-z0-9]+)*$/) && 
     newData.isString()", 
     "$uid": { 
     ".validate": "newData.val() == auth.uid" 
     }, 

我得到驗證失敗。如果我添加驗證它將會失敗並不重要。

任何提示將不勝感激。

模擬器截圖:

Simulator screenshot

+0

@CNuts $ UID工作正常,驗證在$ USERNAME沒有工作即時得到驗證失敗,我想使「user_lookup」如果它不包含字符和數字,將不會創建孩子。 – Sam

+0

您可以顯示代碼(或模擬器的屏幕截圖):顯示正在寫入的值,寫入的位置以及驗證數據? –

+0

@FrankvanPuffelen好的,在這裏你是https://i.gyazo.com/efc25cf15694e87da090ce226adbae44.png,如果我刪除驗證它成功https://i.gyazo.com/d33fa4158ae00d9cf4a7d2a5791810e9.png但我想只寫字符和數字爲用戶名。 – Sam

回答

0

你寫了一個JSON對象:

{ 
    "wewe": "xxxa" 
} 

所以,您的驗證這兩部分會失敗:一個JSON對象既不是一個字符串沒有做它匹配正則表達式。

爲了使驗證工作,寫我們的正則表達式匹配的字符串值:

"xxxa" 
+0

無論如何,它的失敗https://i.gyazo.com/c0391fce9467f123179e23bd9f62858f.png我認爲孩子們不能在那裏添加驗證,感謝您的幫助,我會嘗試另一種方法來做到這一點。這是在這樣的用戶名和用戶名之間切換:https://i.gyazo.com/46c48dc94d75e8c508d70cde94c575a6.png – Sam

+0

在你的第一個截圖中,你仍然寫一個複雜的JSON對象。這意味着**'newData.val()'不是一個字符串**,所以你不能調用'length'。 –

+0

所以這意味着我無法驗證,使用戶名長度至少4個字符?直到我改變到第二個截圖所示的另一種方法吧? – Sam