我正在使用FSharp.Data.GraphQL来实现GraphQL服务器。该文档不是很清楚有关错误处理。在下面的突变解析器中,如果用户为电子邮件和密码提供了无效的值,我希望返回错误:
let login =
Define.AsyncField(
name = "login",
typedef = Nullable Output.Token,
description = "Login using email and password",
args = [
Define.Input("email", String)
Define.Input("password", String)
],
resolve =
fun ctx _ ->
// ... some more code related to db and validation
let customErr: exn = Error.InvalidUserPassword
// This statement has not effect
ctx.AddError customErr
// Should I use raise to explicitly throw exception
// raise customErr
Async.result None
)
查看源代码,我发现了AddError
上的ResolveFieldContext
方法。但这似乎对变异的最终结果没有影响。输出始终没有任何错误:
{
"documentId": 1234,
"data": {
"login": null
},
// The errors array is not available
"errors": []
}
我应该raise
例外以添加错误处理吗?而且,如果是这种情况,由于我只能引发一个异常,我该如何添加多个错误代码作为单个查询或变异的一部分?