【问题标题】:How to delete a particular child in firebase real time (Angular 7)如何在firebase实时删除特定的孩子(Angular 7)
【发布时间】:2020-04-07 20:42:00
【问题描述】:

我一直试图通过单击按钮来删除我的 firebase 实时数据库中的特定子项。分页器可用于我打算根据要求删除的孩子的列表。 下面是我已经走了多远。我已经尝试了所有可能的在线教程,但似乎都没有。要么删除整个父节点,要么显示成功消息,但没有任何效果。

<div fxLayout fxLayoutAlign="center center">
    <mat-form-field fxFlex="60%">
        <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
    </mat-form-field>
</div>



<table mat-table [dataSource]="dataSource" matSort>
    <ng-container matColumnDef="key">
        <th mat-header-cell *matHeaderCellDef> Action </th>
        <td mat-cell *matCellDef="let element" class="action-link">
            <a (click)="getID(item)">Approve</a> |
            <a (click)='delete(key,element)'>Delete</a>
        </td>
    </ng-container>
    <ng-container matColumnDef="name">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Name </th>
        <td mat-cell *matCellDef="let element"> {{element.name}} </td>
    </ng-container>

    <ng-container matColumnDef="phone">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> PhoneNumber </th>
        <td mat-cell *matCellDef="let element"> {{element.phone}} </td>
    </ng-container>

    <ng-container matColumnDef="cartype">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Car Type </th>
        <td mat-cell *matCellDef="let element"> {{element.cartype}} </td>
    </ng-container>

    <ng-container matColumnDef="destination">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Destination</th>
        <td mat-cell *matCellDef="let element"> {{element.destination}} </td>
    </ng-container>

    <ng-container matColumnDef="date">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>
        <td mat-cell *matCellDef="let element"> {{element.date | date: 'dd/MM/yyyy'}} </td>
    </ng-container>

    <ng-container matColumnDef="time">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Time </th>
        <td mat-cell *matCellDef="let element"> {{element.time}} </td>
    </ng-container>
    <ng-container matColumnDef="location">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Your Location </th>
        <td mat-cell *matCellDef="let element"> {{element.location}} </td>
    </ng-container>

    <ng-container matColumnDef="numberOfPersons">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> No of Persons </th>
        <td mat-cell *matCellDef="let element"> {{element.numberOfPersons}} </td>
    </ng-container>

    <ng-container matColumnDef="price">
        <th mat-header-cell *matHeaderCellDef mat-sort-header> Trip Price</th>
        <td mat-cell *matCellDef="let element"> {{element.price}} </td>
    </ng-container>




    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>


<mat-paginator [pageSize]="6" [pageSizeOptions]="[2, 4, 6, 10, 20]">
</mat-paginator>

Ts

delete(key) {
  this.ph.scheduledRideSingle.remove(key).then(() => {
    alert('Success');
  });
}

Ph.ts

[![constructor() {
       this.scheduledRideSingle = firebase.database().ref(`userProfile/ScheduledRides`);

     }



  public scheduledRideSingle: any;

【问题讨论】:

    标签: javascript angular typescript firebase firebase-realtime-database


    【解决方案1】:

    你需要使用remove():

    remove

    删除此数据库位置的数据。

    子位置的所有数据也将被删除。

    https://firebase.google.com/docs/reference/js/firebase.database.Reference#remove

    例如:

    var adaRef = firebase.database().ref('users/ada');
    adaRef.remove()
      .then(function() {
        console.log("Remove succeeded.")
      })
      .catch(function(error) {
        console.log("Remove failed: " + error.message)
      });
    

    如果要删除特定节点,请执行以下操作:

    firebase.database.ref("userProfile/ScheduledRides").child(key).remove();
    

    【讨论】:

    • 谢谢。将尝试并提供反馈。但是我已经更新了我的问题,请检查一下。
    • 好的,我看到了图片,在您的数据库中,您有 userProfile 节点,在它下面您有一个 ID,您需要访问该 ID 才能删除 ScheduledRides
    • firebase.database.ref("userProfile").child(uid). child("ScheduledRides").remove();
    • 是的。谢谢
    • 这解决了它delete(uid) { firebase.database().ref(/userProfile/${uid}/ScheduledRides).remove().then(() =&gt; { alert('Successfully Deleted'); }); }
    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 2019-12-15
    • 2018-08-27
    • 2011-09-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多