【发布时间】:2019-12-13 02:01:13
【问题描述】:
我正在尝试弄清楚如何将对象数组传递到我的 GraphQL 查询中,但是我发现文档对如何执行此操作有点不清楚。我在 FE 中使用 Apollo,在 BE 中使用 Graphql-yoga,并使用 Prisma 作为我的数据库及其 API。
这是我对硬编码对象数组的查询:
const USERS = gql`
query USERS(
$userId: ID
) {
users(
where: {
id_not: $userId
hasProducts_some: {
OR: [
{ itemId: 1 },
{ itemId: 2 }
]
}
}
) {
firstName
}
}
`;
上面的查询返回了我想要的,我有点卡住的是如何获取这个数组:
[
{ itemId: 1 },
{ itemId: 2 }
]
作为查询的变量传入。从我在网上可以找到的内容来看,我可能需要在客户端创建一个GraphQLObjectType 才能传入对象定义。这是我的实现:
import { GraphQLObjectType, GraphQLString } from 'graphql';
const ProductName = new GraphQLObjectType({
name: 'ProductName',
fields: () => ({
itemId: {
type: GraphQLString,
},
})
});
const USERS = gql`
query USERS(
$userId: ID,
$hasProducts: [ProductName]
) {
users(
where: {
id_not: $userId
hasProducts_some: {
OR: $hasProducts
}
}
) {
firstName
}
}
`;
以上返回我以下错误:
未知类型“产品名称”
我是否采用了正确的方法来传递对象数组,如果是这样,我的实现有什么问题?
【问题讨论】:
标签: javascript reactjs graphql apollo