从firebase捕获异常-AngularFire2

从firebase捕获异常-AngularFire2,angular,firebase,firebase-realtime-database,angularfire2,Angular,Firebase,Firebase Realtime Database,Angularfire2,我有以下方法,它位于一个服务中,这个方法特别是保存一个用户配置文件 // Save user Profile saveProfile(user: User): Observable<Response> { return Observable.fromPromise<Response>( this.af.database.object('/users/' + user.userId).update({ first_name

我有以下方法,它位于一个服务中,这个方法特别是保存一个用户配置文件

// Save user Profile
saveProfile(user: User): Observable<Response> {

    return Observable.fromPromise<Response>(

        this.af.database.object('/users/' + user.userId).update({
            first_name: user.first_name,
            display_name: user.display_name,
            biography: user.biography,
            intent: user.intent,
            seeking: user.seeking,
            training: user.training,
            dayDOB: user.dayDOB,
            monthDOB: user.monthDOB,
            yearDOB: user.yearDOB,
            hobbies: user.hobbies,
            last_name: user.last_name,
            gender: user.gender,
            address: user.Address
        }).then((profile: any) => {
            return new Response('Profile has been saved successfully', true);
        })
            .catch((err: any) => {
                return new Response('Unable to save profile at this time, please try again later.', false);
            }) as Promise<Response>
    )

}
//保存用户配置文件
saveProfile(用户:用户):可观察{
可观察的回报(
此.af.database.object('/users/'+user.userId).更新({
first\u name:user.first\u name,
显示\u名称:user.display\u名称,
传记:user.传记,
intent:user.intent,
seeking:user.seeking,
培训:用户培训,
dayDOB:user.dayDOB,
monthDOB:user.monthDOB,
yearDOB:user.yearDOB,
爱好:用户。爱好,
姓氏:user.last\u name,
性别:user.gender,
地址:user.address
})。然后((配置文件:任意)=>{
返回新响应(“配置文件已成功保存”,true);
})
.catch((错误:任意)=>{
返回新响应('此时无法保存配置文件,请稍后重试',false);
})作为承诺
)
}
如您所见,它返回类型为
response
Promise
,这是我的自定义类,其中包含
字符串和
布尔值,我根据更新是否成功填充这些值。然后,我参考组件中的
布尔值来决定下一步要做什么

我遇到的问题是,当我使此方法失败时,它不会返回在方法的
catch
部分中指定的内容,也不会返回
console.log
我指定的任何自定义文本,而是只写入以下内容:

我搜索了
firebase
文档,但没有结果,以前有人经历过这种情况吗?你解决了吗


但是说真的,如果你不能捕获这些异常,为什么还要麻烦使用
.catch

你收到的错误本质上是一个断言错误;这不是从Firebase数据库收到的错误

您传递了它认为无效的
update
方法,因为
address
属性是
未定义的


接收到无效参数时立即抛出同步错误是Firebase JavaScript客户端的作者所做的决定,不太可能改变。您必须确保您通过了有效的输入。

我认为阅读后可能会出现这种情况,但我想我会回答这个问题,以防我遗漏了什么。