首页 文章

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

提问于
浏览
0

我在概念上坚持使用graphql(使用graphql-js) .

让我们说API用户发送一个查询,数据库服务器已关闭,我想将此信息作为错误返回到

data { errors }

名单 .

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

我想知道的另一件事是如何向数据对象添加一个附加消息对象 .

假设用户已经通过id(例如特定帐户)请求了数据库项,并且该项不存在 . 现在,我想回复这样的事情:

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

我该怎么做?我还必须将消息定义为一种类型吗?

2 回答

  • 0

    使 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)的行 . 您可以使用不同的密钥执行相同的操作 .

    祝你好运!

  • 0

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

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

相关问题