Firebase:在添加之前检查现有内容

时间:2017-11-17 20:08:00

标签: javascript firebase firebase-realtime-database nosql

我正在使用生成的ID添加数据,但我正在尝试对“作者”进行分组。

我有一个脚本,每天根据一些公式添加某些人。我无法知道在任何一天都会添加谁,所以我被迫构建数据库,让它在提交(推送)时生成密钥,然后找到作者密钥并找到具有相同值的其他密钥。

我遇到的问题是在添加新记录之前检查是否存在值。其中一个关键值是“URL”。我试图写一些东西来检查每个记录的值,但它似乎重复并写入数据库,无论值是什么,即使我可以正确检测副本。

function CheckDupes(newUrl, author, title, score, url, certified, date){
  var stories = [];
  var duped = "false";

  var leadsRef = database.ref().child("Authors").once("value").then(function(authorSnapshot)
  {
    authorSnapshot.forEach(function(child) {
        stories.push(child.val());
      });
    for(var i = 0; i < stories.length; i++)
    {
      console.log("Story: " + stories[i].url);
      if(stories[i].url == newUrl)
      {
        console.log("Duplicate - " + stories[i].url);
        duped = "true";
        alert("Story Exists!");
        break;
      }
    }
  });

  console.log(duped);
  if(duped == "false")
  {
    firebase.database().ref('Authors/').push({
      author: author,
      title: title,
      score: score,
      url: url,
      certified: certified,
      date: date
    });
    alert("Story has been added!");
  }

这就是我现在拥有的。它会找到副本但它会添加到数据库中,无论它是否找到一个。我已将检查移到foreach循环之外,但它根本不存储任何东西。

1 个答案:

答案 0 :(得分:0)

function CheckDupes(newUrl, author, title, score, url, certified, date){
  var stories = [];
  var duped = "false";
  var leadsRef = database.ref().child("Authors").once("value").then(function(authorSnapshot)
  {
    authorSnapshot.forEach(function(child) {
        stories.push(child.val());
        count++;
      });
      for(var i = 0; i < stories.length; i++)
      {
        if(stories[i].url == newUrl)
        {
          duped = "true";
          alert("Story Exists!");
          return;
          break;
        }
      }
      if(duped == "false")
      {
        firebase.database().ref('Authors/').push({
          author: author,
          title: title,
          score: score,
          url: url,
          certified: certified,
          date: date
        });
        alert("Story has been added!");
      }
  });

authorSnapshot函数中需要的所有内容。愚蠢的错误。