2017-09-15 102 views
0

我目前能夠成功將數據推送到我的Firebase節點(屬性)並創建新屬性,但是一旦我推送數據,我不確定如何找到創建的新屬性的關鍵字,然後將其刪除。無法檢索Firebase密鑰並從角度刪除Firebase中的對象

我相信這很簡單,但它仍然沒有我。

在此先感謝。 :)下面

代碼:

angular.module('propApp') 
.controller('propertyCtrl', function($scope, $rootScope, $mdDialog, $mdMedia, $mdSidenav){ 

    let database = firebase.database(); 
    let ref = database.ref(); 
    let uid = firebase.auth().currentUser.uid; 
    let propRef = ref.child('properties'); 

    // add new property function 
    $scope.addNewProperty = function(){ 

     var newProp = propRef.push({ 
      street: $scope.property.street, 
      postalCode: $scope.property.postalCode, 
      apt: $scope.property.apt, 
      city: $scope.property.city, 
      state: $scope.property.state, 
      landlord: uid, 
      address: $scope.property.street + " " + $scope.property.city + " " + $scope.property.state + " " + $scope.property.postalCode + " " + $scope.property.apt 
     }) 
    }; 

    // var newPropKey = newProp.push().key; 


    // delete property function 
    $scope.deleteProperty = function(){ 
     // delete property 

     // new property variable 
     var newPropKey = ????; //not sure if this is right 

     // want to use a variable to delete property 
     propRef.child('newPropKey').remove(); 



     console.log('deleted!'); 
    } 

}) 
+0

我不知道很多關於角以及如何使用這些信息,但是[火力推(https://firebase.google.com/docs /reference/js/firebase.database.Reference#push)返回對新創建記錄的引用。您可以使用'newProp'對firebase進行新的操作。 – bennygenel

回答

-1
var ref = firebase.database().ref('properties'); 

ref.push({some:'thing'}).then(function(snap) { 
    console.log(snap.key); 
    //look at the database to verify the key is there 
    setTimeout(function() { 
    snap.ref.set(null); 
    //or 
    //ref.child(snap.key).set(null); 
    },5000); 
}) 
+0

儘管您的方法正確地獲取相關密鑰,但我不明白爲什麼需要使用setTimeout來刪除數據。根據這個問題,你只需要獲取密鑰,以便以後可以使用它來刪除。 –

+0

超時值只是爲了讓他/她可以在數據庫控制檯中看到/消失的值作爲其推送/移除值,否則不清楚該值是否實際添加到了firebase中,因爲海報會在添加後立即刪除它。 – Vincent

+0

從我可以從問題中收集的信息,用戶不希望在推送後立即刪除該屬性。相反,他/她需要鑰匙才能以必要的方式刪除或操作。 –