首页 > 解决方案 > 防止实时数据库中的重复

问题描述

我已经设置了一个小的 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>

标签: javascriptfirebasefirebase-realtime-database

解决方案


如果你有以下结构:

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 是否存在于数据库中,如果不存在,则可以添加它。


推荐阅读