Firebase简单的REST DELETE?

时间:2016-01-12 14:38:47

标签: angularjs rest firebase

我在firebase中的数据如下所示。我正在阅读https://www.firebase.com/docs/rest/api/并且很奇怪,我正在尝试删除一个项目。

burning-*

contacts  

     -K7qAf6egBeg5l3e_Gjc
       name: "Ind"
       phonenumber: "(408) ***-***"
       uid: "1"

     -K7qB8Afu7bIm9LUtV68
       name: "Paul Bhayya"
       phonenumber: "(408) ***-***"
       uid:"2"

在angular.js中,我在我的自定义指令中进行此调用。

$http.delete(Firebaseurl + '/contacts/'+scope.contact.name+'/.json').then(function(result) {
    console.log(result);
});

api对我没有意义,我发现问题可能是我的数据现在嵌套在一个带有奇怪ID的密钥中,即-K7qAf6egBeg5l3e_Gjc

所以我想知道如何通过密钥name拨打电话删除项目,如果点击了该联系人的客户端,请点击Ind,然后告诉Firebase删除该联系人那个名字。也许ID更好,但无论有效。

编辑:

仅供参考我解析Firebase对象selectedContacts是对象的GET方法的结果。我的角度代码格式不是很好,所以我把它变成了一个干净的对象数组,我用它来比较其他数据集来传递给$scope

Object.keys(selectedContacts.data).forEach(function(key) {
  selectedContactsArray.push(selectedContacts.data[key]);
});

selectedContactsArray.filter( function( item ) {
    for( var i=0, len=usersContacts.length; i<len; i++ ){
        if( usersContacts[i].name == item.name ) {
            usersContacts[i]['selectedContact'] = true
        }
    }
});

1 个答案:

答案 0 :(得分:3)

以用户名命名:

...firebaseio.com/contacts.json?orderBy="name"&equalTo="Ind"&limitToFirst=1

您必须为安全规则添加索引:

{
  "rules": {
    "contacts": {
      ".indexOn": ["name"]
    }
  }
}

使用此索引,查询将返回如下对象:

{
  "-K7qAf6egBeg5l3e_Gjc": {
     "name": "Ind",
     "phonenumber": "(408) ***-***",
     "uid": "1"
  }
}

您可以从那里读取密钥,然后针对

执行REST DELETE请求
...firebaseio.com/contacts/-K7qAf6egBeg5l3e_Gjc.json

但正如您对问题的评论所述,您也可以使用AngularFire来做同样的事情。