我在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
}
}
});
答案 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来做同样的事情。