我在离子应用程序中使用angularfire2。我试图从firebase节点中删除所有与用户ID匹配的条目。我有一个忠诚点节点,当我运行我的重置功能时,我想删除与该用户相关的忠诚点节点中的所有条目。
我设法将所有条目都放入一个名为“myPoints'将其添加到我的构造函数中:
this.angularfire.auth.subscribe(res => {
if (res != null) {
let userID = res.auth.uid;
this.af.list('/loyaltypoints', {
query: {
orderByChild: 'userId',
equalTo: userID,
}
}).subscribe(response => {
this.myPoints = response;
})
}
})
我不知道如何在this.myPoints变量上运行remove()函数来删除所有这些条目。
谢谢
<小时/> UPDATE
所以这似乎对我有用,首先导入就像这样: import&#39; rxjs / add / operator / take&#39;;
然后此代码删除所有相关的firebase条目:
this.angularfire.auth.subscribe(res => {
if (res != null) {
let userID = res.auth.uid;
this.af.list('/loyaltypoints', {
preserveSnapshot: true,
query: {
orderByChild: 'userId',
equalTo: userID,
}
}).take(1).subscribe(response => {
console.log(response)
response.forEach((snapshot) => {
this.af.object('/loyaltypoints/' + snapshot.key).remove();
})
})
}
})
答案 0 :(得分:3)
所以你缺少的是获得与每个忠诚点条目相对应的密钥。
this.angularfire.auth.subscribe(res => {
if (res != null) {
let userID = res.auth.uid;
this.af.list('/loyaltypoints', {
preserveSnapshot: true,
query: {
orderByChild: 'userId',
equalTo: userID,
}
}).take(1).subscribe(snaphots=> {
snapshots.forEach((snapshot) => {
this.af.object('/loyaltypoints/' + snapshot.key).remove();
})
})
}
})
如果您注意到我添加了一个take(1),因为如果您正在更改您订阅的节点,它会再次触发数据提取。你可能需要稍微玩一下以确保它是正确的。