【问题标题】:Catch exception from firebase - AngularFire2从firebase捕获异常 - AngularFire2
【发布时间】:2017-03-11 13:23:26
【问题描述】:

我有以下位于服务中的方法,该方法特别节省了用户配置文件,没有什么令人兴奋的。

// 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>
    )

}

如您所见,它返回Reponse 类型的Promise 这是我的自定义类,其中包含stringboolean 我根据更新是否成功填充这些值。然后我在我的组件中引用 boolean 值来决定下一步做什么。

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

我已经搜索了firebase 文档,但无济于事,以前有没有人遇到过这种情况?你设法解决了吗?

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

【问题讨论】:

    标签: angular firebase firebase-realtime-database angularfire2


    【解决方案1】:

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

    您已经传递了update 方法,它认为是无效参数,因为address 属性是undefined

    在收到无效参数时立即引发同步错误是 Firebase JavaScript 客户端的作者做出的决定,并且不太可能改变。您必须确保传递给它有效的输入。

    【讨论】:

    • 我认为他们在阅读后可能是这种情况,但我想如果我错过了什么,我会问这个问题。
    猜你喜欢
    • 2017-08-18
    • 2017-08-10
    • 1970-01-01
    • 2017-07-05
    • 2021-04-24
    • 2023-02-21
    • 2021-04-12
    • 2011-05-07
    • 2021-02-28
    相关资源
    最近更新 更多