【问题标题】:unable to retrieve firebase key and delete object from firebase with angular无法使用角度检索firebase密钥并从firebase中删除对象
【发布时间】:2017-09-15 19:55:52
【问题描述】:

我目前能够成功地将数据推送到我的 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!');
    }

})

【问题讨论】:

  • 我不太了解 Angular 以及如何使用这些信息,但 firebase push 返回对新创建记录的引用。您可以使用 newProp 使用 firebase 执行新操作。

标签: javascript angularjs firebase


【解决方案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);
})

【讨论】:

  • 虽然您的方法在获取相关密钥方面是正确的,但我不明白您为什么需要使用 setTimeout 来删除数据。根据问题,您只需要获取密钥,以便以后可以使用它进行删除。
  • 超时只是为了让他/她可以在推/删除时观察数据库控制台中出现/消失的值,否则不清楚该值是否实际添加到 Firebase,因为发布者想要添加后立即删除。
  • 从我可以从问题中收集到的信息,用户不想在推送后立即删除该属性。相反,他/她需要密钥来删除或以所需的方式进行操作。
  • 是的,Utkarsh,你是对的。一旦用户在创建后不立即调用 delete 方法,我将尝试稍后删除该对象。
猜你喜欢
  • 1970-01-01
  • 2018-09-19
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2013-09-28
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多