火力地堡规则验证失败

火力地堡规则验证失败

问题描述:

我有用户查询看起来是这样的:包括[用户名] [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

你写了一个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