Firebase + Angular清除数据的最佳方式

时间:2017-09-07 03:04:08

标签: angular firebase firebase-realtime-database angularfire2

(使用Angular 4.2.x和angularfire2 4.x)

我目前有以下结构,它允许我在更改时动态显示每个用户的数据:

// Firebase DB
{
  "users" : {
    "-KtPA3f-UjTPveqMW-aP" : {
      "name" : "person 1",
      "data" : "abc"
    },
    "-KtPA6Ovj_y9Gw_cCxRo" : {
      "name" : "person 2",
      "data" : "def"
    }
  }
}

// component.ts
private getUsers(): FirebaseListObservable<any> {
  return this.db.getUserList();
}

// component.html template
<tr *ngFor="let user of getUsers() | async">
  <td>
    {{user.name}}
  </td>
  <td>
    {{user.data}}
  </td>
</tr>

我希望能够快速清除所有用户的“数据”属性。

我最初想的是像这样重构我的数据库:

// Firebase DB
{
  "group": {
    "users": {
      "-KtP9Zo9du3pK3NoBMv7": {
        "name": "person 1"
      },
      "-KtP9Zsz_58v7w4YJOaB": {
        "name": "person 2"
      }
    },
    "userData": {
      "-KtP9Zo9du3pK3NoBMv7": {
        "data": "abc"
      },
      "-KtP9Zsz_58v7w4YJOaB": {
        "data": "def"
      }
    }
  }
}

...然后在必要时删除“userData”对象,但后来我不知道如何在我的component.ts和我的模板中使用这个结构。我想我不知何故需要“加入”对象,但仍保持数据动态? (我是Angular的新手)

我也可以尝试使用旧结构编写一些东西来浏览“users”对象并清除每个“data”属性,但我不太清楚如何做到这一点,因为我还是新手AngularFire。

欢迎任何线索!谢谢!

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您想要在所有用户节点中正确删除用户 - &gt;数据是您想要的吗?  我不知道打字稿,但我可以在firebase中这样做,如下面的

首先创建像这样的对象

var delUserData={};

然后获取数组中的所有用户列表,以便您可以遍历它,

for (var i=0;i<usersArray.length; i++){
  delUserData["users/"+usersArray[i].$id+"/"+"data"]=null;
});

然后将delete obj传递给firebase查询,如

 firebase.database().ref().update(delUserData).then(function(){
   alert("Success")
});

我添加了jsfiddle示例See this example