javascript - 防止实时数据库中的重复
问题描述
我已经设置了一个小的 Web 前端来将数据插入实时数据库。它正在工作,下面是相关代码。
现在我想改进此代码以防止用户添加具有相同 url 的元素。处理此问题的最佳方法是什么。我尝试了几件事,但没有奏效。而且我也不想使用 url 作为键。
请让我知道任何好的建议。
<form id='adTF'>
Name: <input id='name' type='text' maxlength=128 size=50 value='' required>
<br/><br/>
URL: <input id='url' type='text' maxlength=128 size=50 value='' required>
<br/><br/>
<input type='submit' value='Submit'>
</form>
<script>
document.getElementById('adTF').addEventListener('submit',addNewItem)
var dbReference = firebase.database().ref('ItemList');
function addNewItem(event) {
event.preventDefault();
const url = document.getElementById('url').value.trim(),
name = document.getElementById('name').value.trim();
let newItem = dbReference.push();
newItem.set({url:url,name:name});
document.getElementById('url').value = '';
document.getElementById('name').value = '';
} /* End of addNewItem */
</script>
解决方案
如果你有以下结构:
ItemList
randomId
url : url
name:name
然后您可以执行以下操作:
var dbReference = firebase.database().ref('ItemList');
dbReference.orderByChild("url").equalTo(url).on("value", function(snapshot) {
if (snapshot.exists()) {
}
});
这将检查 url 是否存在于数据库中,如果不存在,则可以添加它。
推荐阅读
- flask-login - Flask 登录会话 ID 处理
- android - Android XML 设计器与实际屏幕不匹配/图标和图像未显示
- r - 在闪亮的应用程序中,我在哪里丢失了工具提示?
- heroku - TypeError:无法读取未定义的属性“单元格”
- html - 登录表单 Css 不适用于 html
- android - Flutter:持续更改标题的应用栏
- ios - 在创建的路径上添加形状
- java - Smali - 如何绕过 iget-object 方法返回 int 值
- jenkins-pipeline - karmaExecuteTests 在阶段总是失败:SAPUI5 MTA 项目的附加单元测试
- python - 使用 BeautifulSoup 抓取 Web 数据