(使用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。
欢迎任何线索!谢谢!
答案 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