Apollo 客户端和 graphQl 查询错误:“OrganizationWhereUniqueInput”类型的变量“$where”预期值
Posted
技术标签:
【中文标题】Apollo 客户端和 graphQl 查询错误:“OrganizationWhereUniqueInput”类型的变量“$where”预期值【英文标题】:Apollo client and graphQl query error : Variable '$where' expected value of type 'OrganizationWhereUniqueInput 【发布时间】:2020-11-27 12:17:19 【问题描述】:您好,我正在使用 GraphQL、Apollo 客户端和 Prisma 制作后端服务器。我正在尝试编写一个查询来获取组织数据。发送查询的用户应该根据他们的 id 取回其组织数据。在操场上运行查询时出现此错误。
错误:
"message": "Variable '$where' expected value of type 'OrganizationWhereUniqueInput!' but got: \"employees\":\"id\":\"ckas83z13t9qk0992pucglc4k\". Reason: 'employees' Field 'employees' is not defined in the input type 'OrganizationWhereUniqueInput'. (line 1, column 8):\nquery ($where: OrganizationWhereUniqueInput!) \n ^",
我看不出我做错了什么。我对这一切还是很陌生。我尝试以不同的方式在Query.js
中编写函数,但没有运气。另外,我仍然觉得您在操场上收到的错误消息非常令人困惑
架构:
type Query
getOrganization: Organization!
type Organization
id: ID!
name: String!
country: String!
street: String!
zipCode: Int!
houseNumber: Int!
addings: String
employees: [User!]
type User
id: ID!
firstname:String!
lastname:String!
email: String!
services: [Service!]
organization: Organization!
query.js
function getOrganization(parent, args, context, info)
const userId = getUserId(context)
return context.prisma.organization(employees:id:userId)
// also tried this
/*
function getOrganization(parent, args, context, info)
const userId = getUserId(context)
return context.prisma.organization(where: employees:id:userId)
*/
用户.js
function services (parent, args, context)
return context.prisma.user(id: parent.id).services()
function organization (parent, args, context)
return context.prisma.user(id: parent.id).organization()
module.exports=
services,
organization
Organization.js
function employees(parent, args, context)
return context.prisma.organization(id: parent.id).employees()
module.exports=
employees
谁能帮我看看出了什么问题?
在操场上查询:
query
getOrganization
name
id
HTTP HEADER:
"Authorization": "Bearer contains user token "
【问题讨论】:
你能分享一下你的查询吗? 好的,我已经编辑了我的问题,所以它包含了游乐场查询 我认为您不能使用变量employees
来查询特定组织。错误状态相同:OrganizationWhereUniqueInput
此输入可能只接受组织 ID 作为输入,因此此查询 return context.prisma.organization(employees:id:userId)
必须更改为 return context.prisma.organization( id: 'some-id' )
好的,但必须有办法找回用户所属的组织?
您可以尝试通过这样的员工获取组织吗:function getOrganization(parent, args, context, info) const userId = getUserId(context) return context.prisma.user( id: userId ).organization()
【参考方案1】:
只需使用 OrganizationWhereInput 而不是 OrganizationWhereUniqueInput。它将返回一个组织列表而不是单个结果(可能返回一个空数组),但它应该允许您使用员工 ID 搜索组织。
【讨论】:
以上是关于Apollo 客户端和 graphQl 查询错误:“OrganizationWhereUniqueInput”类型的变量“$where”预期值的主要内容,如果未能解决你的问题,请参考以下文章
如何从 graphql apollo 客户端查询中获取/记录/捕获错误
解决 graphql 查询中的联合结果时出现意外的 *Missing Field* 错误(Vue Apollo 客户端)