Mic*_*bry 2 rest angularjs 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"
Run Code Online (Sandbox Code Playgroud)
在 angular.js 中,我在我的自定义指令中进行了这个调用。
$http.delete(Firebaseurl + '/contacts/'+scope.contact.name+'/.json').then(function(result) {
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
api 对我来说没有意义,我看到问题可能是我的数据现在嵌套在一个带有奇怪 ID 的键中,即-K7qAf6egBeg5l3e_Gjc.
所以我想知道如何通过键来调用删除一个项目,name所以如果客户端点击该联系人说Ind被点击,那么我告诉 Firebase 删除具有该名称的联系人。也许 ID 更好,但不管怎样都行。
编辑:
仅供参考,我解析的 Firebase 对象selectedContacts是对象的 GET 方法的结果。对于我的 angular 代码,它的格式不是很好,所以我把它变成了一个干净的对象数组,我用它来与其他数据集进行比较以传递给$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
}
}
});
Run Code Online (Sandbox Code Playgroud)
要按名称获取用户:
...firebaseio.com/contacts.json?orderBy="name"&equalTo="Ind"&limitToFirst=1
Run Code Online (Sandbox Code Playgroud)
您必须在安全规则中添加索引:
{
"rules": {
"contacts": {
".indexOn": ["name"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个索引,查询将返回一个像这样的对象:
{
"-K7qAf6egBeg5l3e_Gjc": {
"name": "Ind",
"phonenumber": "(408) ***-***",
"uid": "1"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从那里读取密钥,然后对它执行 REST DELETE 请求
...firebaseio.com/contacts/-K7qAf6egBeg5l3e_Gjc.json
Run Code Online (Sandbox Code Playgroud)
但正如对您的问题的评论中所讨论的那样,您也可以使用 AngularFire 来做同样的事情。
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |