我的graphcool上有以下架构:
type User @model {
id: ID! @isUnique
name: String!
email: String!
password: String!
}
使用运动场,我可以正确执行此操作:
query {
User(id: "1234") {
id
name
}
}
但是这个查询:
query {
User(name: "Thomas") {
id
name
}
}
抛出错误:
“查询”类型的“用户”字段上的未知参数“名称”。 (第2行, 第8栏):
用户(名称:“ Thomas”)。
为什么?以及如何解决这个问题?根据我的观点,可以立即查询模型中已经存在的任何内容,对吗?顺便说一句,我是graphQL的新手,而且几乎没有文章讨论此错误(每个教程都假设它会立即生效),因此,如有必要,请给出更详尽的答案。
答案 0 :(得分:1)
GraphQL本质上不允许对对象进行任意查询。
模式中的某些地方会有一个附加声明,例如
[{'number': 1, 'favorite': False, 'color': {'green', 'red'}}, {'number': 1, 'favorite': True, 'color': {'red'}}, {'number': 2, 'favorite': False, 'color': {'red'}}]
type Query {
User(id: ID!): User
}
类型的名称是您可以运行的顶级查询,并且该查询中列出的参数是它们接受的 only 参数。 (对于顶级突变,有一种相应的Query
类型,它可以更改基础状态,并在查询中使用Mutation
关键字。)
如果您控制服务器的实现,则可以添加参数或其他顶级查询
mutation
但是您还必须提供此查询的实现或处理其他参数,这是代码更改。