添加到数据库后,数据不断重复

时间:2017-09-14 02:29:19

标签: javascript firebase web firebase-realtime-database

我有一个起始id为1的表。我有一个函数,使用limitToLast(1)获取最后添加的id并添加1,以便我将添加到数据库的下一个数据将2作为key,如果最后添加的id是1.但是发生了什么:

THis is whatt happened in my database

它成功添加了2作为我添加的数据的关键,但它继续添加更多并重复我的数据。 这是我的代码:

   function uploadProperty() {   

  user = firebase.auth().currentUser;
  var selectedFile;

 var propertiesref = db.ref('property/');
  propertiesref.orderByChild("property").limitToLast(1).on("child_added", 
  function(snapshot) {

   var getkey = Number(snapshot.key);
   var id = getkey + 1;
   firebase.database().ref("property/" + id).set({

     property_id: id,
     user_id: user.uid,
     property_desc: $("#desc").val() , 
     property_address: $("#address0").val() ,    
     property_slot: $("#slot").val(),
     property_price: $("#price").val(),
     rent_type: $("#renttype").val(),
     type: $("#type").val(),
     lat: $("#lat").val(),
     lon: $("#lon").val(),
     date_created: $("#datecreated").val(),  
     image_path: $("#image").val()  

  });

   desc.value = '';   
  address0.value = '';  
  slot.value  = '';
  price.value  = '';
  type.value  = '';
  renttype.value  = '';
  lat.value  = '';
  lon.value  = '';


     });
  }

1 个答案:

答案 0 :(得分:0)

您应该使用once()而不是on()on()使听众附加,因此当您使用以下内容存储新的孩子时

firebase.database().ref("property/" + id).set(...);
听众再次开火。