如何在Firebase数据库中获取一个事务的结果?

How to obtain the result of a transaction in the Firebase database?

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

服务 class 中执行

这个 class 有一个 items 属性,允许在 Firebase 数据库上执行获取、插入和更新操作:

items: FirebaseListObservable<any[]>;

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

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

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

通过分析适用于update操作的方法,我发现了then方法。 我附上了一个显示 then 实现的必要参数的捕获。

then方法的return是一个类型的对象:

firebase.Promise<any>

据我调查,这个Promise元素,return是数据库中交易结果的代码。

我的问题是: 是否可以使用此 Promise 元素来了解交易是成功结束还是失败? update函数的return怎么处理?

此致!

正如 Doug 评论的那样,Promise 可以导致两种状态:操作成功完成,在这种情况下,promise resolved 并且它的 then() 回调被调用,或者操作失败,其中 promise 被 rejected 并且它的 catch() 回调被调用。

所以你可以同时处理:

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