如何从 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 服务器发送错误消息的主要内容,如果未能解决你的问题,请参考以下文章