node.js - 如何使用 graphQL 返回错误数组

标签 node.js graphql hapi.js

我怎样才能返回多个这样的错误消息?

"errors": [
  {
    "message": "first error",
    "locations": [
      {
        "line": 2,
        "column": 3
      }
    ],
    "path": [
      "somePath"
    ]
  },
  {
    "message": "second error",
    "locations": [
      {
        "line": 8,
        "column": 9
      }
    ],
    "path": [
      "somePath"
    ]
  },
]

在我的服务器上,如果我执行 throw('an error'),它会返回。

"errors": [
  {
    "message": "an error",
    "locations": [
      {
      }
    ],
    "path": ["somePath"]
  }
]

我想返回查询中所有错误的数组。 如何向 errors 数组添加多个错误?

最佳答案

抛出一个带有 errors:[] 的错误对象。错误数组应该包含您想要汇总的所有错误。使用 formatError 函数来格式化错误输出。在下面的示例中,我使用的是 Apollo UserInputError。您也可以使用 GraphQLError。没关系。

const error = new UserInputError()
error.errors = errorslist.map((i) => {
  const _error = new UserInputError()
  _error.path = i.path
  _error.message = i.type
  return _error
})
throw error

new ApolloServer({
  typeDefs,
  resolvers,
  formatError: ({ message, path }) => ({
    message,
    path,
  }),
})

//sample output response
{
  "data": {
    "createUser": null
  },
  "errors": [
    {
      "message": "format",
      "path": "username"
    },
    {
      "message": "min",
      "path": "phone"
    }
  ]
}

关于node.js - 如何使用 graphQL 返回错误数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44130930/

相关文章:

javascript - 通过ajax formdata发布文件

graphql - 开始使用 graphql-php : how to add resolver functions to schema from . graphql 文件?

hapi.js - 如果用户使用 Hapi.js 登录,则禁用登录路由

javascript - 使用填充字符串的自定义类型扩展 Joi

node.js - Hapi.js 和 Socket.io——socket.io.js 在哪里?

javascript - NodeJS + Hapi + CSS 麻烦

javascript - 使用 Application Insights NodeJ 进行遥测处理器内的异步操作

javascript - 如何使用 MERN 堆栈构建动态单页 Web 应用程序?

node.js - Sequelize destroy 无法测试真实性

javascript - GraphQL 解析 GraphQLObjectType