将变量传递给阿波罗查询时出错
Posted
技术标签:
【中文标题】将变量传递给阿波罗查询时出错【英文标题】:Error when passing variable to apollo query 【发布时间】:2019-09-28 21:25:56 【问题描述】:创建了一个类似于 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
/> 导致错误。
【问题讨论】:
【参考方案1】:如错误所示,id
是必需变量,但您没有将其传入。这是您的代码,它使用属性简写语法:
<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 >
【讨论】:
以上是关于将变量传递给阿波罗查询时出错的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io、Node.js:如何在 javascript.js 中将 javascript 变量传递给 mysql 查询?
在 azure synapse 存储过程中将表名作为参数传递时将查询结果分配给变量
我可以将变量从 JSP scriptlet 传递给 JSTL,但不能从 JSTL 传递给 JSP scriptlet 而不会出错