如何在graphql-js中为对象类型定义解析器?

时间:2020-04-09 09:36:26

标签: graphql graphql-js

我的应用程序中有很多graphql类型。

我使用graphql-js构造它们。

// example
const TruckDriver: GraphQLObjectType = new GraphQLObjectType({
  name: 'TruckDriver',
  fields: () => ({
    id: { type: GraphQLString },
  }),
})

然后,我在不同的查询和变量中导入此类类型,以定义返回值的类型。

但是我的解析器不返回对象,而是返回类信息的实例,其中字段信息位于嵌套属性“ info”中。例如,上面的解析器将返回

{
   info: {
     id: '123'
   }
   ...
}

我想在类型中添加解析器,但是发现类型没有解析器。

如何为我的对象类型轻松实现字段数据解析的逻辑?

1 个答案:

答案 0 :(得分:0)

您可以为每个单独的字段指定解析器,如下所示:

const TruckDriver: GraphQLObjectType = new GraphQLObjectType({
  name: 'TruckDriver',
  fields: () => ({
    id: {
      type: GraphQLString
      resolve: truck => truck.info.id
    },
  }),
})

或修改“查询”和“突变”字段的解析器以返回适当形状的对象。像

async function resolve () {
  const trucks = await getTrucks()
  return trucks.map(truck => truck.info)
}