参数化查询 graphQL

Parameterized queries qraphQL

我想从 Apollo 客户端向 Apollo 服务器发出参数化请求。

在客户端:

const GET_VALUES = gql`
query Values($desc: String!) {      
    Values      
}    
`;
function ValueSelector({ pickValue, dirDesc }) { 
const { loading, data, error } = useQuery(GET_VALUES, {
variables: { dirDesc },
 });
}

在服务器上(模式):

type Query {
Values(desc: String!): [String]
@cypher(
  statement: "MATCH (:Dir{description:$desc})-[:value]->(v) RETURN collect(v.TXTLG)"
 )  
}

结果:

[GraphQL error]: Message: Field "Values" argument "desc" of type "String!" is required, but it was not provided., Location: [object Object], Path: undefined
[Network error]: ServerError: Response not successful: Received status code 400

您应该在 useQuery 的变量参数中使用 desc 而不是 dirDesc。试试这个:

const { loading, data, error } = useQuery(GET_VALUES, {
variables: { desc: dirDesc },
 });

您在客户端的查询声明缺少实际变量。应该是这样的

const GET_VALUES = gql`
    query Values($desc: String!) {      
         Values(dirDesc: $desc)      
    }    
`;

然后你可以使用 useQuery 传递 dirDesc。

const GET_VALUES = gql`
    query Values($desc: String!) {      
      Values(desc: $desc)  
    }    
  `;

function ValueSelector({ pickValue, dirDesc }) {   
  const { loading, data, error } = useQuery(GET_VALUES, {
    variables: { desc:dirDesc},
   });