AngularFire2 回调设置值

AngularFire2 call back for setting values

我正在为我的 angular 2 项目使用 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);

我可以看到我的 firebase 能够保存数据。但是,我想对请求的状态(成功、失败、超时?)进行某种回调,以便我可以在此过程中显示某种 activity 指示符。我想在我调用 saveToFirebase()

的 app.component 文件中执行此操作

set returns a promise,所以如果您 return 从您的服务方法中承诺:

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 and push 可能就是您要查找的内容。

push 方法会将 child 添加到 parent ref,生成推送密钥(一些随机数据和时间戳的组合 - 这样密钥将按时间)。它 return 是一个 'thenable' 数据库引用(即 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));

以上示例解析了对推送密钥的承诺,以便服务的调用者可以使用它。