【问题标题】:Firebase + Angular best way to clear dataFirebase + Angular 清除数据的最佳方式
【发布时间】:2017-09-08 15:52:22
【问题描述】:

(使用 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 的新手)

我也可以尝试使用旧结构编写一些东西来遍历“用户”对象并清除每个“数据”属性,但我不太确定如何做到这一点,因为我还是新手角火。

欢迎提供任何线索!谢谢!

【问题讨论】:

    标签: angular firebase firebase-realtime-database angularfire2


    【解决方案1】:

    我从你的问题中了解到,你想在所有用户节点中正确删除用户->数据是你想要的吗? 我不了解打字稿,但我可以在 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

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2017-05-03
      相关资源
      最近更新 更多