如何在F#中使用FSharp.Data.GraphQL对GraphQL服务器进行错误处理?

问题描述

我正在使用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例外以添加错误处理吗?而且,如果是这种情况,由于我只能引发一个异常,我该如何添加多个错误代码作为单个查询变异的一部分?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)