繁体   English   中英

graphql-js中的graphql错误和状态消息

[英]graphql errors and status messages in graphql-js

我在概念上迷上了graphsql(使用graphql-js)。

假设API用户发送了一个查询,而数据库服务器已关闭,我想将此信息作为错误返回,

data { errors }

名单。

我该如何访问数据中的错误对象并在其中推送我自己的错误消息(例如,有关数据库服务器中断的消息)?

接下来我想知道的是如何向数据对象添加附加消息对象。

假设用户已按ID请求数据库项(例如,特定帐户),但该项不存在。 现在,我想返回如下内容:

{
    data: {
        messages: [{status: "failure", message: "This account does not exist"}]
    }
}

我该怎么做,是否还必须将消息定义为类型?

errorsmessages作为查询结果的一部分的一种方法是将它们作为GraphQL对象类型的字段包括在内。

例如,您有一个GraphQL对象类型Item其中包含字段id,名称,错误和消息。 当数据库服务器关闭时,仅填充项目实例的errors字段。 当具有给定ID的项目不可用时,将填充messages字段。 该项目可用时,将设置名称字段。

使errorsmessages字段显示在GraphQL响应的data属性内的唯一方法是将它们包括在GraphQL模式的类型系统中,并向客户端明确要求它们。 但是,如果您希望在每次请求时都返回一个自定义errorsmessages字段,而无论客户端是否要求它们,都可以将它们包括在data属性之外。

例如,如果您使用express-graphql ,则它提供了扩展选项,该选项使您可以将任何多余的信息附加到每个响应有效负载上( https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index。 js#L95

如果您未使用express-graphql ,则可以将其视为如何在每个响应中包括自己的元数据的示例。 express-graphql是一个非常简单的包装器,您始终可以将自己的数据写入响应中。 例如,这是express-graphql附加errorshttps://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L309 )。 您可以执行相同操作,但使用不同的密钥。

祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM