angularjs - 从 Firebase ListObservable 中删除对象

标签 angularjs firebase firebase-realtime-database angularfire2

我正在开发一个使用 Firebase 作为数据存储的 Angular2 应用程序。第一步是使用集合并将对象插入集合中:

this.weeks$ = angularFire.database.list("/weeks");
this.weeks$.push({
    id: ScheduleComponent.weekId(),
});

我现在想从集合中删除一周。我是否必须在 Firebase 中查询该对象并将其删除?或者有没有办法直接从 ListObservable 中删除对象?

应该没那么难...

我尝试查询数据库,但这删除了整个集合:

this.angularFire.database.list('/weeks', {
    query: {
        id: weekId
    }
}).remove();

或者我是否必须在 ListObservable 上使用过滤运算符来获取对象并将其删除?我正在尝试以下操作:

this.weeks$
    .find(week => week.id == weekId)
    .do(
        week => console.log(week)
        // here the delete code
    ).subscribe();

但没有达到预期的结果?

我做错了什么?我认为这是不知道如何使用 Firebase Angular 2 绑定(bind)和不知道如何正确处理 rx observables 的结合。


编辑

我找到了删除对象的方法,但我仍然不满意: 该模板如下所示:

<button class="btn btn-default (click)="deleteWeek(week.$key)">delete</button>

代码:

this.angularFire.database.object(`/weeks/${weekId}`).remove();

如何在不使用 Firebase key 的情况下删除对象,例如根据用户输入?并且是否需要再次查询该对象?如何使用ListObservable直接删除对象?

最佳答案

您可以通过将元素传递给remove来从列表中删除元素。例如,这将删除第一个元素:

this.weeks$ = angularFire.database.list("/weeks");
this.weeks$
  .first()
  .subscribe((list) => this.weeks$.remove(list[0]));

您还可以将保留的快照传递给删除:

this.weeks$ = angularFire.database.list("/weeks", { preserveSnapshots: true });
this.weeks$
  .first()
  .subscribe((list) => this.weeks$.remove(list[0]));

您还可以将推送 ID/ key (由 push 返回的 thenable 提供)传递给 remove:

this.weeks$ = angularFire.database.list("/weeks");
let key = this.weeks$.push({
  id: ScheduleComponent.weekId(),
}).key;
this.weeks$.remove(key);

该 key 也可以从项目本身获得:

this.weeks$ = angularFire.database.list("/weeks");
this.weeks$
  .first()
  .subscribe((list) => this.weeks$.remove(list[0].$key));

(请注意,此答案中的代码并不合理;它只是为了显示如何获取传递给 remove 的值。)

关于angularjs - 从 Firebase ListObservable 中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42124888/

相关文章:

json - 如果我不知道它是什么,如何在 AngularJS 中访问 JSON 属性名称?

javascript - 使用 ng-pattern 识别 Angular 字母数字字段中的前导零

javascript - 如何使用 ID/ key (使用 React)从 Firebase 检索和呈现数据?

android - Firebase 权限被拒绝

javascript - 从 firebase 检索值时收到未定义的消息

javascript - 使用 ng-options 动态添加禁用选项

android - ionic $urlRouterProvider.otherwise() 不工作

javascript - 查找由外部程序引起的当前Firebase修改的路径

android - Symphony Teleca 设备上 Firebase 初始化的空指针异常

swift - FirebaseCore 词法或预处理器问题