嘿,我有这段代码
BsFirebase.Auth.signInWithEmailAndPassword(
Firebase.auth,
~email=self.state.email,
~password=self.state.password,
)
|> Js.Promise.then_(_user => {
// ...
})
|> Js.Promise.catch((error) => {
// ...
})
|> ignore;
在catch中,错误字段包含一个字段code
,我可以用它来获取有关错误的更多详细信息。
我正在尝试编写一个包装函数来将error
转换为“自定义”类型,但我不知道该怎么做。
到目前为止,我(感谢贾里德)
type firebaseError = {"code": int, "message": string}; /* etc. */
external unsafeCeorceToFirebaseError: Js.Promise.error => firebaseError = "%identity";
如何添加额外检查以确保错误中存在code
属性?
答案 0 :(得分:1)
如果合适的话,一种方法是将数据结构视为JSON,并使用bs-json
之类的JSON解码库,因为这些库旨在处理未知或不可靠的数据结构。
或者,您可以将每个字段键入为Js.Nullable.t
,并在使用时分别进行测试。
尽管您可以避免使用promise错误进行错误处理,但这是首选,因为这不是一种类型安全的方法。请改用result
类型,并将承诺错误视为异常。