【发布时间】:2018-12-03 20:18:24
【问题描述】:
我正在使用 React 和 Firebase 制作一个简单的图书管理器应用。用户可以输入图书的作者、标题和评级,我正在尝试验证输入。
数据结构如下:
"books" : {
"-LSon2JjuqUWb6tXV-EA" : {
"author" : "Stephen King",
"rating" : "5",
"title" : "\"Misery\""
},
"-LSp33lP1b5W2XOXyEmI" : {
"author" : "Stephen King",
"rating" : "10",
"title" : "\"Cujo\""
}
}
在调用 push 方法时,Firebase 会以编程方式生成每个键。 现在,我想验证用户的输入,但关键似乎提出了一个问题。我应该如何在陈述中提及它?或者我的规则不起作用的原因可能完全不同?如果我省略生成的键并直接在“书籍”对象中引用作者/标题/评级,我可以添加不符合我所说的条件的数据。
{
"rules": {
".read": "true",
".write": "true",
"books" : {
"???" : {
"author" : {
".validate" : "newData.isString() && newData.val() > 0"
},
"title" : {
".validate" : "newData.isString() && newData.val() > 0"
},
"rating" : {
".validate" : "newData.isNumber()"
}
}
}
}
}
如果有任何提示,我将不胜感激。
【问题讨论】:
-
您在问题中包含了规则和 JSON 树的图片。请将这些替换为实际规则和 JSON 作为文本。后者您可以通过单击your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获得。将规则和 JSON 作为文本使它们可搜索,使我们能够轻松地使用它们来测试您的实际数据并将其用于我们的答案中,通常只是一件好事。
-
如果您指出您的规则有哪些不适用的地方也很好。如果它与您尝试过的代码有关,请显示使用这些规则重现问题的最少代码,并说明哪些问题不起作用。
-
嗨!谢谢你的建议,让我的帖子更清晰。我根据您的建议对其进行了编辑。我希望我所做的更改会有所帮助。
-
再次:确保所有文本内容都以文本形式出现在帖子中。这里不需要任何屏幕截图。现在,如果我想回答,我必须重新输入你的大部分规则。虽然有些人可能会这样做,但这对他们来说是愚蠢的方便工作,如果您提供所有文本并使用 Stack Overflow 格式化工具使其看起来不错,则可以避免。
标签: firebase firebase-realtime-database firebase-security