小编hol*_*ler的帖子

Apollo 客户端不显示错误消息

我已经配置并设置了一个功能齐全的 express-nextjs-graphql-apollo 应用程序,它可以登录/注销用户,并完美地执行 CRUD。最后一个非常重要的步骤是在客户端显示错误消息。

到目前为止,我只在控制台中收到此红色错误: POST http://localhost:3000/graphql 500 (Internal Server Error)

例如,登录表单验证。当没有提供输入时,它应该得到一个无效的输入错误消息,或者E-Mail is invalid如果电子邮件格式不正确。

以下在 graphql 中测试的变异代码localhost:3000/graphql

mutation {
  login(userInput: {email:"" password:""}){
    userId
  }
}
Run Code Online (Sandbox Code Playgroud)

返回下面的消息。我实际上希望此消息显示在客户端上。

{
  "errors": [
    {
      "message": "Please provide input.",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "login"
      ]
    }
  ],
  "data": null
}
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 onError 在 Mutation 组件内的客户端上显示错误消息:

    onError={error => {
        console.log("ERROR in SigninBox component ", error);
      }}
Run Code Online (Sandbox Code Playgroud)

这仅在控制台中显示此错误消息: Response not successful: Received status code 500

这是我 …

error-handling apollo reactjs graphql graphql-js

2
推荐指数
1
解决办法
2676
查看次数

删除突变返回 null

我有一个待办事项列表,我已经成功地添加了新项目并更新了缓存,现在正在努力添加删除突变。我的最终目标是从删除突变中返回一个 id,该 id 可用于更新客户端的整个待办事项列表。

我尝试将项目的 id 传递给突变,但它返回 null。

图式

type Todo {
  _id: ID!
  todo: String!
}

type RootMutation {
  deleteTodo(_id: ID!): Todo
}
Run Code Online (Sandbox Code Playgroud)

解析器

  deleteTodo: async function({ _id }, req) {
    return await Todo.deleteOne({ _id });
  }
Run Code Online (Sandbox Code Playgroud)

使用以下代码在http://localhost:3000/graphql 的graphql 接口中测试了此突变:

mutation {
  deleteTodo (_id: "example0101010101001010101aasdsadasd"){
        _id
    }
}
Run Code Online (Sandbox Code Playgroud)

出现此错误

{
  "errors": [
    {
      "message": "Cannot return null for non-nullable field Todo._id.",
      "locations": [
        {
          "line": 3,
          "column": 3
        }
      ],
      "path": [
        "deleteTodo",
        "_id"
      ]
    }
  ],
  "data": …
Run Code Online (Sandbox Code Playgroud)

javascript node.js graphql express-graphql

1
推荐指数
1
解决办法
2738
查看次数