将变量传递给 apollo 查询时出错
Error when passing variable to apollo query
创建了一个类似于此 example 的 Apollo 查询,但不断收到此错误:Variable "$id" of required type "ID!" was not provided.
我的架构:
type RootQuery {
person(_id: ID!): Person!
}
和解析器:
person: async args => {
const person = await Person.findById(args._id);
return {
_id: person._id,
name: person.name,
location: person.location,
address: person.address,
};
}
在localhost:3000/graphql
中正常工作
我正在传递一个 ID 并取回数据。
然而,它在客户端不起作用,错误提示未提供 ID。
查询
const GET_PERSON_QUERY = gql`
query person($id: ID!) {
person(_id: $id) {
_id
name
location
address
}
}
`;
查询组件
export const GetPerson = ({ _id }) => {
console.log("id: ", _id);
return (
<Query query={GET_PERSON_QUERY} variables={{ _id }}>
{({ loading, error, data }) => {
if (error) return <div>Error loading posts</div>;
if (loading) return <div>Loading...</div>
);
return (
<ul>
<li>{data.person.name}</li>
</ul>
);
}}
</Query>
);
};
例如将这个变量const _id = "abcabc"
传递给组件
<GetPerson _id={_id}
/> 结果出错。
如错误所示,id
是必需的变量,但您没有将其传入。这是您的代码,它使用 属性 shorthand 语法:
<Query query={GET_PERSON_QUERY} variables={{ _id }}>
这相当于:
<Query query={GET_PERSON_QUERY} variables={{ _id: _id }}>
因此您提供的变量名为 _id
,而不是 id
。将变量属性更改为:
<Query query={GET_PERSON_QUERY} variables={{ id: _id }}>
创建了一个类似于此 example 的 Apollo 查询,但不断收到此错误:Variable "$id" of required type "ID!" was not provided.
我的架构:
type RootQuery {
person(_id: ID!): Person!
}
和解析器:
person: async args => {
const person = await Person.findById(args._id);
return {
_id: person._id,
name: person.name,
location: person.location,
address: person.address,
};
}
在localhost:3000/graphql
中正常工作
我正在传递一个 ID 并取回数据。
然而,它在客户端不起作用,错误提示未提供 ID。
查询
const GET_PERSON_QUERY = gql`
query person($id: ID!) {
person(_id: $id) {
_id
name
location
address
}
}
`;
查询组件
export const GetPerson = ({ _id }) => {
console.log("id: ", _id);
return (
<Query query={GET_PERSON_QUERY} variables={{ _id }}>
{({ loading, error, data }) => {
if (error) return <div>Error loading posts</div>;
if (loading) return <div>Loading...</div>
);
return (
<ul>
<li>{data.person.name}</li>
</ul>
);
}}
</Query>
);
};
例如将这个变量const _id = "abcabc"
传递给组件
<GetPerson _id={_id}
/> 结果出错。
如错误所示,id
是必需的变量,但您没有将其传入。这是您的代码,它使用 属性 shorthand 语法:
<Query query={GET_PERSON_QUERY} variables={{ _id }}>
这相当于:
<Query query={GET_PERSON_QUERY} variables={{ _id: _id }}>
因此您提供的变量名为 _id
,而不是 id
。将变量属性更改为:
<Query query={GET_PERSON_QUERY} variables={{ id: _id }}>