GraphQL学习——执行

2017-12-18  本文已影响0人  布蕾布蕾

一个GraphQL查询在被验证后,GraphQL服务器会将之执行。

type Query {
  human(id: ID!): Human
}

type Human {
  name: String
  appearsIn: [Episode]
  starships: [Starship]
}

enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
}

type Starship {
  name: String
}
{
  human(id: 1002) {
    name
    appearsIn
    starships {
      name
    }
  }
}
{
  "data": {
    "human": {
      "name": "Han Solo",
      "appearsIn": [
        "NEWHOPE",
        "EMPIRE",
        "JEDI"
      ],
      "starships": [
        {
          "name": "Millenium Falcon"
        },
        {
          "name": "Imperial shuttle"
        }
      ]
    }
  }
}

根字段 & 解析器

Query: {
  human(obj, args, context) {
    return context.db.loadHumanByID(args.id).then(
      userData => new Human(userData)
    )
  }
}

异步解析器

human(obj, args, context) {
    return context.db.loadHumanByID(args.id).then(
      userData => new Human(userData)
    )
  }

不重要的解析器

对于产生的Human,GraphQL会继续递归执行下去

Human: {
  name(obj, args, context) {
    return obj.name
  }
}
上一篇 下一篇

猜你喜欢

热点阅读