[GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id”没有提供

Posted

技术标签:

【中文标题】[GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id”没有提供【英文标题】:[GraphQL error]: Message: Variable "$id" of required type "MongoID!" was not provided 【发布时间】:2019-05-29 17:38:56 【问题描述】:

我有以下疑问:

import  gql  from 'apollo-boost';
const GetUserInfo = gql`
query getUserInfo($id: MongoID!)
    userById(_id: $id)
      local
        username
...
    
  
`;

export  GetUserInfo ;

然后我将查询绑定到我的“React.Component”

import React from "react";
...
import  GetUserInfo  from "../../queries/queries";
import  graphql  from 'react-apollo';



class Dashboard extends React.Component 
  constructor(props) 
    super(props);
...

Dashboard.propTypes = ;



export default graphql(GetUserInfo, 
  options: (props) => 
    return 

          variables: 
              _id: props.ID
      
    
  
)(Dashboard);

我确定 props.ID 等同于 MongoDB ID。我也确定正在读取来自父组件的道具。

以上代码导致如下错误:

[GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id”未提供。,位置:[object Object],路径:未定义

console error

我们将不胜感激任何反馈。谢谢!

【问题讨论】:

【参考方案1】:

查询中使用的变量是$id;查询需要使用选项中传递的这个变量来执行。

当前传递了 _id 的值,这是一个从未在查询中使用的不同变量。

你可以让两个变量同名。

export default graphql(GetUserInfo, 
  options: (props) => 
    return 

          variables: 
              id: props.ID
      
    
  
)(Dashboard);

【讨论】:

谢谢!我最初尝试过并认为它不正确,因为我收到了一个错误。你肯定有帮助!

以上是关于[GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id”没有提供的主要内容,如果未能解决你的问题,请参考以下文章

[GraphQL 错误]:消息:“rootMutation”类型的字段“createUser”上的未知参数“email”。位置:[object Object],路径:未定义

GraphQL - 突变响应后的自定义错误消息

在 GraphQL Mutate 函数中将 ID 作为正确的变量类型传递

错误:使用 Nestjs + Graphql + Typeorm 时无法确定 GraphQL 输入类型

当这些变量被删除时,如何停止获取所需导出变量的 Apollo GraphQL 查询

尽管有效,但未提供所需类型的变量