如何在Firebase数据库中获取交易结果?

时间:2018-09-25 00:01:13

标签: angular firebase firebase-realtime-database promise angular2-services

我正在尝试使用Angular2在Firebase数据库的节点上获得 update 操作的结果。 此方法在名为 arbitro.service.ts 服务类中执行。

此类具有 items 属性,该属性允许在Firebase数据库上执行获取,插入和更新操作:

items: FirebaseListObservable<any[]>;

用于在 Arbitro 记录上执行更新的代码如下所示:

  editarArbitro(arbitro: Arbitro): void {
    this.items.update(arbitro.id, arbitro);
  }

此方法接收 Arbitro 类的实例作为参数,并在Firebase数据库中执行更新。

通过分析适用于 update 操作的方法,我发现了 then 方法。 我附加了一个捕获文件,其中显示了 then 实施所需的参数。

then method

then方法的返回值是一个对象类型:

firebase.Promise<any>

正如我调查的那样,此 Promise 元素返回数据库上交易结果的代码。

我的问题是: 是否可以使用此 Promise 元素来确定事务是成功结束还是失败? 我应该如何处理更新功能的返回?

致谢!

1 个答案:

答案 0 :(得分:2)

如Doug所言,Promise可能导致两种状态:操作成功完成,在这种情况下,Promise已解决 ,并且调用了其then()回调,或者操作失败,其中的承诺被被拒绝,并且其catch()回调被调用。

因此,您可以通过以下两种方式处理这两种情况:

this.items.update(arbitro.id, arbitro)
    .then(function() {
        console.log("Update completed successfully");
    })
    .catch(function(error) {
        console.log("Update failed: "+error);
    });