代码之家  ›  专栏  ›  技术社区  ›  Chen Li Yong

如何在graphql上使用自定义字段查询?

  •  0
  • Chen Li Yong  · 技术社区  · 6 年前

    我的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
      }
    }
    

    投掷错误:

    “query”类型的字段“user”上的参数“name”未知。(第2行, 第8栏):
    用户(姓名:“Thomas”)。

    为什么?如何解决这个问题?从我的POV,任何已经在模型上的东西,都可以立即被查询,对吗?顺便说一句,我在graphql中是个新手,几乎没有关于这个错误的文章(每一个教程都像假设这个会立即生效一样),所以如果需要的话,请给出更详细的答案。

    1 回复  |  直到 6 年前
        1
  •  1
  •   David Maze    6 年前

    graphql本质上不允许对对象进行任意查询。

    在您的模式中的某个地方将有一个额外的声明,比如

    type Query {
      User(id: ID!): User
    }
    

    中的名称 Query 类型是可以运行的顶级查询,该查询中列出的参数是 只有 他们接受的论点。(有一个对应的 Mutation 顶级突变的类型,它可以改变基础状态,并使用 mutation 查询中的关键字。)

    如果控制服务器实现,则可以添加参数或附加的顶级查询

    userByName(name: String!): User
    

    但是您还必须提供这个查询的实现或处理附加参数,这是一个代码更改。