我正在使用AngularFire2进行角度2项目。
在我的forms.service.ts中,我有以下内容保存到firebase
saveToFirebase(bug: MyBugs) {
const bugRef = this.af.database.object('/bugs');
bugRef.set(bug)
}
在我的app.component.ts中,我有
this.formsService.saveToFirebase(bug);
我可以看到我的firebase能够保存数据。但是,我想对请求的状态(成功,失败,超时?)进行某种回调,这样我就可以在此过程中显示某种活动指示符。我想在我调用saveToFirebase()
的app.component文件中执行此操作答案 0 :(得分:2)
set
returns a promise,所以如果你从服务方法中退回所说的承诺:
saveToFirebase(bug: MyBugs): Promise<void> {
const bugsObject = this.af.database.object('/bugs');
return bugsObject.set(bug);
}
可以像这样调用:
this.formsService
.saveToFirebase(bug)
.then(() => console.log('done!'))
.catch(error => console.log(error));
鉴于您使用的数据库路径名为bugs
并且您似乎添加了一个错误,可能是list
和push
是你在找什么。
push
方法会将子项添加到父ref,生成推送键(一些随机数据和时间戳的组合 - 以便键按时间排序)。它会返回一个“可以”的&#39;数据库引用(即Promise),您可以从中获取推送键。
你可以这样做:
saveToFirebase(bug: MyBugs): Promise<string> {
const bugsList = this.af.database.list('/bugs');
const result = bugsList.push(bug);
return result.then(() => result.key) as Promise<string>;
}
可以像这样调用:
this.formsService
.saveToFirebase(bug)
.then((key: string) => console.log('pushed: ' + key))
.catch(error => console.log(error));
以上示例解决了对按键的承诺,以便服务人员可以使用它。