繁体   English   中英

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

[英]How can I define resolver for object type in graphql-js?

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

我使用 graphql-js 来构建它们。

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

然后我在不同的查询和突变中导入这些类型来定义返回值的类型。

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

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

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

如何轻松实现 object 类型的字段数据解析逻辑?

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

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

或修改 Query 和 Mutation 字段的解析器以返回适当形状的对象。 就像是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM