Firebase中的更新删除其他条目

时间:2016-04-26 16:26:30

标签: javascript html firebase

我想在他们约会的时候输入一些班次。这对于19-01工作正常,但是当我尝试进入保存和删除19-01的条目的20-01时。

任何人都知道问题是什么以及为什么它不能让我拥有更多的那棵树?

//ROSTERS SAVING 
//ROSTERS FOR MONDAYS
$(function Monday(){

  // CREATE A REFERENCE TO FIREBASE
  var dateMondayRef = new Firebase('https://shiftsapp.firebaseio.com/roster');

  // REGISTER DOM ELEMENTS
  var date1Field = $('#date1Input');
  var emp1put1Field = $('#emp1Input1');
  var enter1Field = $('#enter1');

  // LISTEN FOR KEYPRESS EVENT
  enter1Field.keypress(function (e) {
    if (e.keyCode == 13) {
      //FIELD VALUES
      var dateMonday = date1Field.val();
      var emp1put1 = emp1put1Field.val();
      var enter1 = enter1Field.val();

      //SAVE DATA TO FIREBASE AND EMPTY FIELD
      var obj1 = {};
      obj1[dateMonday] = {
        emp1:emp1put1,
      }

      dateMondayRef.set(obj1);
      enter1Field.val('');
    }
  });

});

$(function Tuesday(){

  // CREATE A REFERENCE TO FIREBASE
  var dateTuesdayRef = new Firebase('https://shiftsapp.firebaseio.com/roster');

  // REGISTER DOM ELEMENTS
  var date2Field = $('#date2Input');
  var emp1put2Field = $('#emp1Input2');
  var enter2Field = $('#enter2');

  // LISTEN FOR KEYPRESS EVENT
  enter2Field.keypress(function (e) {
    if (e.keyCode == 13) {
      //FIELD VALUES
      var dateTuesday = date2Field.val();
      var emp1put2 = emp1put2Field.val();
      var enter2 = enter2Field.val();

      //SAVE DATA TO FIREBASE AND EMPTY FIELD
      var obj = {};
      obj[dateTuesday] = {
        emp1:emp1put2
      }

      dateTuesdayRef.set(obj);
      enter2Field.val('');
    }
  });

});

1 个答案:

答案 0 :(得分:2)

这是因为您在同一参考号中使用了Firebase的set方法而不是update(您的dateMondayRefdateTuesdayRef都指向同一个Firebase节点。)

正如in the docs所述,set

  

写或替换数据

换句话说,当您在ref上调用set时,指示firebase在此位置写入(或替换可能存储在那里的任何数据)作为参数传递的对象。

您可以在此引用上使用update(但这会保留roster/$dateMonday中出现但未包含在新对象中的任何子密钥)或获取对{{{}的引用1}}节点,并在其上调用dateMonday

set