在火力地堡删除单个项目与AngularJS [英] Delete single item in Firebase with AngularJS
问题描述
我挣扎了一下了解如何从对象中删除火力地堡单个项目与AngularJS。
I am struggling a bit understanding how to remove a single item from an object in Firebase with AngularJS.
这是我的火力地堡(仅有趣位):
This is my Firebase (only the interesting bit):
projects
|
`--- $id
| `-- Name
| `-- CreatorID
|
user_project
|
`--- CreatorID
`-- projectid
每次用户创建相同加到条目与一个创建者ID等于所述用户ID,我从火力地堡简单登录获得的条目。与此同时,我的code创建内部user_entries一个新的项目/的CreatorID(让我有每个用户相关的条目列表)。
Every time a user creates an entry the same is added to the entries with a Creator ID equal to the user ID that I get from Firebase Simple Login. At the same time, my code creates a new item inside user_entries/CreatorID (so that I have a list of entries associated with every user).
例如:
projects
|
`--- JlagYdBNX1gyMVCoXBF
| `-- Name: "Activity 1"
| `-- CreatorID: "simplelogin:29"
|
user_projects
|
`--- simplelogin:29
`--JleI106xJgZf6_mGHUI: "JlagYdBNX1gyMVCoXBF"
现在我的问题是,我可以删除的条目,但我不知道如何回到正轨,并从user_entries(让我得到很多的孤儿有)。
Now my problem is that I can delete an entry, but I don't know how to track back and delete the same from user_entries (so that I am getting many orphans there).
我使用的是工厂:
app.factory('Project', function ($firebase, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL);
var projects = $firebase(ref.child('projects')).$asArray();
var Project = {
all: projects,
create: function (project) {
return projects.$add(project).then(function(projectRef) {
$firebase(ref.child('user_projects').child(project.creatorUID))
.$push(projectRef.name());
return projectRef;
});
},
delete: function (project) {
var userid = project.creatorUID;
return projects.$remove(project).then(function(projectRef) {
//$firebase(ref.child('user_projects').child(userid))
console.log(project.$id);
});
},
};
return Project;
});
我知道$删除有所回调返回处理项目的$ ID,所以我试图改变的删除的为:
delete: function (project) {
var userid = project.creatorUID;
return projects.$remove(project).then(function(projectRef) {
$firebase(ref.child('user_projects').child(userid))
.$remove(projectRef.$id);
});
},
但我得到
的错误:Firebase.child失败:第一个参数是一个无效的路径:未定义。路径必须是非空字符串,不能包含。,#,$,[或]的
对如何处理这个问题呢?任何暗示
Any hint on how to approach this problem?
推荐答案
这可能是不干净的解决方案,但我找到了一种方法来实现,我需要保存user_projects条目号的唯一ID到项目本身的内容:
It may be not the cleanest solution but I found a way to achieve what I needed saving the unique ID of the user_projects entry id into the project itself:
create: function (project) {
return projects.$add(project).then(function(projectRef) {
var projectId = projectRef.name();
$firebase(ref.child('user_projects').child(project.creatorUID))
.$push(projectId).then(function(userProjectRef) {
var userProjectId = userProjectRef.name();
$firebase(ref.child('projects').child(projectId).child('LinkID')).$set(userProjectId);
});
return projectRef;
});
},
所以,在我的火力点,我得到:
So that in my firebase I get:
projects
|
`--- JlagYdBNX1gyMVCoXBF
| `-- Name: "Activity 1"
| `-- CreatorID: "simplelogin:29"
| `-- LinkID: "JleI106xJgZf6_mGHUI"
|
user_projects
|
`--- simplelogin:29
`--JleI106xJgZf6_mGHUI: "JlagYdBNX1gyMVCoXBF"
然后它更容易删除的条目:
And then it's much easier to delete the entry:
delete: function (project) {
var userId = project.creatorUID;
var userProjectId = project.LinkID;
return projects.$remove(project).then(function(projectRef) {
$firebase(ref.child('user_projects').child(userId)).$remove(userProjectId);
});
},
这篇关于在火力地堡删除单个项目与AngularJS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!