AngularFire2回调以设置值
我正在使用AngularFire2进行AngularFire2项目 在我的forms.service.ts中,我有以下内容要保存到firebaseAngularFire2回调以设置值,angular,typescript,angularfire2,Angular,Typescript,Angularfire2,我正在使用AngularFire2进行AngularFire2项目 在我的forms.service.ts中,我有以下内容要保存到firebase saveToFirebase(bug: MyBugs) { const bugRef = this.af.database.object('/bugs'); bugRef.set(bug) } 在我的app.component.ts中,我有 this.formsService.saveToFirebase(bug); 我可以看
saveToFirebase(bug: MyBugs) {
const bugRef = this.af.database.object('/bugs');
bugRef.set(bug)
}
在我的app.component.ts中,我有
this.formsService.saveToFirebase(bug);
我可以看到我的firebase能够保存数据。但是,我希望对请求的状态(成功、失败、超时?)进行某种回调,以便在过程中显示某种活动指示器。我想在我的app.component文件中执行此操作,我在其中调用saveToFirebase(),因此如果您从服务方法返回所述承诺:
saveToFirebase(bug: MyBugs): Promise<void> {
const bugsObject = this.af.database.object('/bugs');
return bugsObject.set(bug);
}
考虑到您使用的数据库路径名为bugs
,并且您似乎在添加一个bug,这很可能就是您正在寻找的
push
方法将向父ref添加一个子项,生成push键(一些随机数据和时间戳的组合,以便键按时间排序)。它返回一个“thenable”数据库引用(即承诺),您可以从中获得按键
你可以这样做:
this.formsService
.saveToFirebase(bug)
.then(() => console.log('done!'))
.catch(error => console.log(error));
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));
上面的示例将承诺解析为按键,以便服务的调用者可以使用它。,因此如果您从服务方法返回所述承诺:
saveToFirebase(bug: MyBugs): Promise<void> {
const bugsObject = this.af.database.object('/bugs');
return bugsObject.set(bug);
}
考虑到您使用的数据库路径名为bugs
,并且您似乎在添加一个bug,这很可能就是您正在寻找的
push
方法将向父ref添加一个子项,生成push键(一些随机数据和时间戳的组合,以便键按时间排序)。它返回一个“thenable”数据库引用(即承诺),您可以从中获得按键
你可以这样做:
this.formsService
.saveToFirebase(bug)
.then(() => console.log('done!'))
.catch(error => console.log(error));
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));
上面的示例解析了按键的承诺,以便服务的调用者可以使用它。谢谢。我怎么知道在这种情况下是否发生了错误呢?实际上,
set
返回firebase.Promise
,这有点烦人,但可以安全地将其转换为:return bugRef.set(bug)as Promise代码>愚蠢的问题。为什么承诺很烦人?它在这种情况下起作用。另外,如果您有:Promise,那么将其转换为return bugRef.set(bug)as Promise不是多余的吗?这不是承诺;事实上,它是一个firebase.Promise
,这有点让人恼火——正如TypeScript所看到的,它是Promise
的不同类型。就这些,谢谢卡坦特。你说得对,我确实需要推搡。然而,为什么它是可见的?我是否只想把它推到列表上一次,然后像承诺一样离开它?。你介意和我分享一下我如何改变它,让它通过observable完成吗?文档不是很清楚,很遗憾……谢谢。我怎么知道在这种情况下是否发生了错误呢?实际上,set
返回firebase.Promise
,这有点烦人,但可以安全地将其转换为:return bugRef.set(bug)as Promise代码>愚蠢的问题。为什么承诺很烦人?它在这种情况下起作用。另外,如果您有:Promise,那么将其转换为return bugRef.set(bug)as Promise不是多余的吗?这不是承诺;事实上,它是一个firebase.Promise
,这有点让人恼火——正如TypeScript所看到的,它是Promise
的不同类型。就这些,谢谢卡坦特。你说得对,我确实需要推搡。然而,为什么它是可见的?我是否只想把它推到列表上一次,然后像承诺一样离开它?。你介意和我分享一下我如何改变它,让它通过observable完成吗?不幸的是,文件不是很清楚。。。。