如何在Firebase(Cloud Firestore)中删除文档?

时间:2020-07-27 19:02:21

标签: angular firebase google-cloud-firestore

感谢您的提前答复。

碰巧我正在尝试从Firebase(Cloud Firestore)删除文档。我需要这个ID。但是ID不在我运行时得到的数组中:return this.db.collection ('enterprises').ValueChanges();

提供该行代码的数组仅包含我仅写的属性(名称,电子邮件)

仅通过运行this.db.collection('enterprises').snapshotChanges();,我才能获得另一个修复程序,即从该文件中获得ID的文件(fix.payload.doc.id)。和信息数组通过:fix.payload.doc.data();

问题是我将Id数组拆开了,而不是放在前一个数组中。为了解决这个问题,我做了一个数组混合,所以我把上面的数组以id作为属性。但是问题是:这是这样做的方式吗?还是有另一种无需删除数组就删除文档的方法? (我用foreach做到了)

Users.service.ts(afs是AngularFirestore)

mixInfo() {
   return this.afs.collection('users').snapshotChanges();
}

deleteUser(id: string) {
   this.afs.collection('users').doc(`${id}`).delete();
}

users.component.ts

mixInfo() {
   this.userService.mixInfo().subscribe(r => {
     r.forEach(user => {
       const id = user.payload.doc.id;
       const data = <UserInterface>user.payload.doc.data();
       const { name, email, password, role } = data;
       this.userService.editUser(id, { id, name, email, password, role })
       this.getUsers();
    });
  });
}

onDelete(id) {
   this.userService.deleteUser(id);
}

模板

<tbody>
  <tr *ngFor="let user of users; let i = index">
     <td contenteditable="true" (blur)="onEdit(user, 'name', $event)">{{user.name}}</td>
     <td contenteditable="true" (blur)="onEdit(user, 'email', $event)">{{user.email}}</td>
     <td contenteditable="true" (blur)="onEdit(user, 'role', $event)">{{user.role}}</td>
     <td>                           
        <a *ngIf="user.role !== 'Administrador'" (click)="onDelete(user.id)" class="delete" title="Delete" data-toggle="tooltip"><i class="material-icons">&#xE872;</i></a>
     </td>
  </tr>    
</tbody>

谢谢!

1 个答案:

答案 0 :(得分:1)

要在Firestore中写入或删除文档,您需要知道其完整路径,包括该路径中集合的名称和文档。没有其他选择。因此,您要么1)提前知道ID,要么2)对其进行查询。听起来您不知道ID,但是可以查询以找到要删除的文档。必须将其删除。