如何从 apollo 服务器发送错误消息

Posted

技术标签:

【中文标题】如何从 apollo 服务器发送错误消息【英文标题】:How to send an error message from the apollo- server 【发布时间】:2020-03-27 10:21:55 【问题描述】:

这是我的代码

在 apollo 客户端中,我使用 useMutation。

阿波罗客户

  const [addTodo,  loading, error, data ] = useMutation(gql);

阿波罗服务器

 Mutation: 
    signUp: async (_, formSignUp,  models:  User , res ) => 
      try 
        const user = new User(formSignUp);
        await user.save();
        const token = await user.generateAuthToken();
        res.cookie("darkAmasia", token, 
          httpOnly: true
        );
        return "string";
       catch (error) 
        ?????????
      
    
  

我应该在 catch 中写什么?发送消息status:400,error:truein useMutation 错误。 听说throw new ApolloError是用来做这些的,但是不知道怎么弄。

【问题讨论】:

【参考方案1】:

阅读更多关于错误处理的信息here

您可以创建自己的 Error 类来扩展 ApolloError 并将状态作为默认属性传递。

    Mutation: 
    signUp: async (_, formSignUp,  models:  User , res ) => 
      try 
        const user = new User(formSignUp);
        await user.save();
        const token = await user.generateAuthToken();
        res.cookie("darkAmasia", token, 
          httpOnly: true
        );
        return "string";
       catch (error) 
        throw new ApolloError("Something went wrong", "BAD_INPUT",status:400,error:true);
      
    
  

【讨论】:

为什么我在控制台中收到错误消息?如何使这种情况不发生? Uncaught (in promise) Error: GraphQL error: Backend request failed 使用 return 而不是 throw 尝试 不,这也没有帮助。

以上是关于如何从 apollo 服务器发送错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Socket Send(2) - 如何从服务器向客户端发送错误消息

向源发送请求时出错。 Apollo Engine 如何配置 apollo engine origins?

如何通过azure设备配置服务从azure功能向iot设备发送自定义错误消息?

如何发送文件以响应 graphql 查询? (从服务器向客户端发送一个 csv 文件)

Apollo 客户端向错误的 uri 发送请求

如何使用socket从服务器发送和接收消息?