在火力地堡删除单个项目与AngularJS [英] Delete single item in Firebase with AngularJS

查看:121
本文介绍了在火力地堡删除单个项目与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆