如何将 graphQL 查询属性映射到不同的响应属性?

Posted

技术标签:

【中文标题】如何将 graphQL 查询属性映射到不同的响应属性?【英文标题】:How to map graphQL query property to different response property? 【发布时间】:2020-09-22 01:01:22 【问题描述】:

我在 .graphql 文件中定义了一个 graphQL type,用于 Nestjs 模式第一个应用程序。类型是:

type address 
  id: String
  Title: String
  Url: String

现在,使用 nestjs 我有一个解析器函数

@Query('address')
async getAll(): Promise<any> 
  return await this.addressService.getAll();

await this.addressService.getAll() 的结果是一个对象数组,其中包含 _ 的属性,例如:

[
  
    id: 1,
    address_title: 'title',
    address_url: 'url'

  
]

我还在为@Query@ResolveField 等使用@nestjs/graphql 库。我的问题是,如何将响应属性映射到我在nestjs 框架的.graphql 文件中作为SDL 编写的graphql 属性?有什么方法可以使用nestjs将graphql查询属性映射到结果属性?

我查看了 graphql 别名,也提到了here,但这对我没有用。对此的任何帮助都非常感谢。

【问题讨论】:

【参考方案1】:

您可以使用直接方法:

@Query('address')
getAll(): Promise<any> 
  return this.addressService.getAll().map(this.addressMapper);


private addressMapper(address: any): address 
  return id: address.id, Title: address.address_title, Url: address_url;

或者使用 NestJS pipes。

【讨论】:

以上是关于如何将 graphQL 查询属性映射到不同的响应属性?的主要内容,如果未能解决你的问题,请参考以下文章

如果列中存在数据,如何将列名映射到查询响应中?

如何在 reactJS 中映射嵌套的 graphQL 查询

如何使用带有 Typescript 的泛型将中继(graphql)连接映射到边缘节点

如何根据 GraphQL (NestJS) 中的条件发送不同的订阅响应?

将 Apollo 客户端用于 GraphQl 时如何在 watchQuery 中使用 loading 属性

如何删除一些用于将数据发送到 graphql 的属性