如何在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);
});
我正在尝试使用 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);
});