【发布时间】:2016-01-12 14:38:47
【问题描述】:
我在 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
}
}
});
【问题讨论】:
-
向节点的 URL 发送 HTTP DELETE 请求应该删除该节点。你遇到了什么问题?
-
建立正确的 uri 以删除正确的节点。
-
啊,我没看到。
scope.contact.name可能与节点的键不同。您的问题是如何查找给定scope.contact.name的节点的键? -
是的,提供更多上下文我解析了对象,看看修改后的问题。
-
您将从 Firebase 获得的键+值对 (
selectedContacts.data) 转换为仅包含值的数组。然后稍后您需要删除该项目的密钥。不放弃密钥不是一种选择吗?