从 firebase 捕获异常 - AngularFire2
Catch exception from firebase - AngularFire2
我有以下位于服务中的方法,这个方法特别保存用户配置文件,没什么好激动的。
// 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>
)
}
如您所见,return类型为 Reponse
的 Promise
这是我的自定义 class,其中包含一个 string
和一个 boolean
我根据更新是否成功填充这些值。然后我在我的组件中引用 boolean
值来决定下一步做什么。
我遇到的问题是,当我使此方法失败时,它没有 return 方法的 catch
部分中指定的内容,也没有 console.log
任何内容我指定的自定义文本只是写入以下内容:
我已经搜索了 firebase
文档,但无济于事,有没有人遇到过这种情况?你设法解决了吗?
但是说真的,如果你不能捕获这些异常,为什么还要麻烦 .catch
。
您收到的错误本质上是断言错误;这不是从 Firebase 数据库收到的错误。
您向 update
方法传递了它认为无效的参数,因为 address
属性 是 undefined
.
当接收到无效参数时立即抛出同步错误是 Firebase JavaScript 客户端的作者做出的决定,并且不太可能改变。您必须确保传递给它有效的输入。
我有以下位于服务中的方法,这个方法特别保存用户配置文件,没什么好激动的。
// 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>
)
}
如您所见,return类型为 Reponse
的 Promise
这是我的自定义 class,其中包含一个 string
和一个 boolean
我根据更新是否成功填充这些值。然后我在我的组件中引用 boolean
值来决定下一步做什么。
我遇到的问题是,当我使此方法失败时,它没有 return 方法的 catch
部分中指定的内容,也没有 console.log
任何内容我指定的自定义文本只是写入以下内容:
我已经搜索了 firebase
文档,但无济于事,有没有人遇到过这种情况?你设法解决了吗?
但是说真的,如果你不能捕获这些异常,为什么还要麻烦 .catch
。
您收到的错误本质上是断言错误;这不是从 Firebase 数据库收到的错误。
您向 update
方法传递了它认为无效的参数,因为 address
属性 是 undefined
.
当接收到无效参数时立即抛出同步错误是 Firebase JavaScript 客户端的作者做出的决定,并且不太可能改变。您必须确保传递给它有效的输入。