graphql-js 中的 graphql 错误和状态消息
graphql errors and status messages in graphql-js
我在概念上坚持使用 graphsql(使用 graphql-js)。
假设 API 用户发送了一个查询,而数据库服务器已关闭,我想 return 此信息作为
中的错误
data { errors }
列表。
我如何访问数据中的错误对象并将我自己的错误消息(例如关于数据库服务器中断)推送到那里?
接下来我想知道的是如何向数据对象添加附加消息对象。
假设用户已通过 ID(例如特定帐户)请求数据库项目,但该项目不存在。现在,我想 return 像这样:
{
data: {
messages: [{status: "failure", message: "This account does not exist"}]
}
}
我该怎么做,我是否必须将消息也定义为一种类型?
将 errors
和 messages
作为查询结果的一部分的一种方法是将它们作为字段包含在您的 GraphQL 对象类型中。
例如,您有一个 GraphQL 对象类型 Item
,其中包含字段 id、名称、错误和消息。当数据库服务器关闭时,仅填充项目实例的 errors
字段。当具有给定 ID 的项目不可用时,将填充 messages
字段。当项目可用时,设置名称字段。
让 errors
和 messages
字段出现在 GraphQL 响应的 data
属性 中的唯一方法是将它们包含在类型系统中你的 GraphQL 模式,并明确地从客户端请求它们。但是,如果您希望在每次请求时都返回自定义 errors
和 messages
字段,而不管客户是否要求它们,您可以将它们包含在 data
属性.
例如,如果您使用 express-graphql
,它会提供一个扩展选项,允许您将任何多余的信息附加到每个响应负载 (https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L95)
如果您没有使用 express-graphql
,您可以将其视为如何在每个响应中包含您自己的元数据的示例。 express-graphql
是一个非常简单的包装器,您始终可以将自己的数据写入响应中。例如,这是 express-graphql
附加 errors
(https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L309) 的行。您可以执行相同的操作,但使用不同的密钥。
祝你好运!
我在概念上坚持使用 graphsql(使用 graphql-js)。
假设 API 用户发送了一个查询,而数据库服务器已关闭,我想 return 此信息作为
中的错误data { errors }
列表。
我如何访问数据中的错误对象并将我自己的错误消息(例如关于数据库服务器中断)推送到那里?
接下来我想知道的是如何向数据对象添加附加消息对象。
假设用户已通过 ID(例如特定帐户)请求数据库项目,但该项目不存在。现在,我想 return 像这样:
{
data: {
messages: [{status: "failure", message: "This account does not exist"}]
}
}
我该怎么做,我是否必须将消息也定义为一种类型?
将 errors
和 messages
作为查询结果的一部分的一种方法是将它们作为字段包含在您的 GraphQL 对象类型中。
例如,您有一个 GraphQL 对象类型 Item
,其中包含字段 id、名称、错误和消息。当数据库服务器关闭时,仅填充项目实例的 errors
字段。当具有给定 ID 的项目不可用时,将填充 messages
字段。当项目可用时,设置名称字段。
让 errors
和 messages
字段出现在 GraphQL 响应的 data
属性 中的唯一方法是将它们包含在类型系统中你的 GraphQL 模式,并明确地从客户端请求它们。但是,如果您希望在每次请求时都返回自定义 errors
和 messages
字段,而不管客户是否要求它们,您可以将它们包含在 data
属性.
例如,如果您使用 express-graphql
,它会提供一个扩展选项,允许您将任何多余的信息附加到每个响应负载 (https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L95)
如果您没有使用 express-graphql
,您可以将其视为如何在每个响应中包含您自己的元数据的示例。 express-graphql
是一个非常简单的包装器,您始终可以将自己的数据写入响应中。例如,这是 express-graphql
附加 errors
(https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L309) 的行。您可以执行相同的操作,但使用不同的密钥。
祝你好运!