这是数据库架构:
以下是规则:
$("input[name=group]").change(function () {
if ($(this).val() == 'A' & 'B' && $(this).is(":checked")) {
$("#combined").show();
} else {
$("#combined").hide();
}
});
如何验证(使用“.validate”或“.write”规则)用户只能在整个树中输入整数?或者有一些解决方法吗?
我想要实现的是创建只写(没有删除或更新)的日志,该日志具有一些结构并将在稍后处理。我可以将结构更改为2015-10-6-17-30之类的密钥或其他内容。我简直不敢相信Firebase没有针对这种情况的东西。
更新: 这不重复,我正在寻找解决方法,或者其他能帮助我实现目标的东西。
答案 0 :(得分:14)
验证密钥是否为数字:
{
"$key": {
".validate": "$key.matches(/^[0-9]+$/)"
}
}
但请阅读array-like behaviors in Firebase。提示:可能使用" y2015"," m12"等前缀来避免使用数字时出现意外结果。
答案 1 :(得分:2)
如果使用推送ID适用于您,可以使用以下安全规则结构。
{
"notifications": {
"$notification_id": {
".write": "!data.exists()",
".read": "false",
".validate": "newData.hasChildren(['time', 'state', 'message'])",
"time": {
".validate": "newData.val().matches(/YOUR REGEX/)"
},
"state": {
".validate": ""
},
"message": {
".validate": ""
}
}
}
}
显然你需要填补空白。这里最重要的是你可以使用正则表达式匹配时间字段。
实际数据如下:
{
"notifications": {
"-K-z5koYf8mYZu5OfSGR": {
"time": "2015-10-06-17-30",
"state": 1,
"message": "foo"
},
"-K-z5koYf8mYZwgwsfGx": {
"time": "2015-10-06-17-30",
"state": 1,
"message": "bar"
}
}
}