从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客户端的作者所做的决定,不太可能改变。您必须确保您通过了有效的输入。我认为阅读后可能会出现这种情况,但我想我会回答这个问题,以防我遗漏了什么。