首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeGraphQL使用TypeORM的findAndCount方法

TypeGraphQL使用TypeORM的findAndCount方法
EN

Stack Overflow用户
提问于 2019-05-10 22:53:51
回答 1查看 3.3K关注 0票数 1

我想使用TypeORMfindAndCount函数,它返回Promise<[Entity[], number]>进行分页。所以我有一个解析器:

代码语言:javascript
复制
offers(@Arg('page', { defaultValue: 1 }) page: number): Promise<[Offer[], number]> {
    const COUNT = 10
    return this.offerRepository.findAndCount({ take: COUNT, skip: (page - 1) * COUNT })
}

我也在使用type-graphql,并想用Query注释来注释这个解析器,如下所示:

代码语言:javascript
复制
@Query(returns => ???)

然而,我不知道返回类型,我尝试了这个(当然不起作用,因为findAndCount返回的是什么):

代码语言:javascript
复制
@ObjectType()
class TestType {
    @Field(type => [Offer])
    offers: Offer[]

    @Field()
    count: number
}

并尝试像这样使用它:@Query(returns => [TestType])和这个@Query(returns => TestType)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 19:50:49

GraphQL不支持元组,因此需要创建一个响应对象类型:

代码语言:javascript
复制
@ObjectType()
class OffersResponse {
  @Field(type => [Offer])
  items: Offer[]

  @Field(type => Int)
  totalCount: number
}

然后手动将元组映射到对象:

代码语言:javascript
复制
@Query(returns => OffersResponse)
offers(@Arg('page', { defaultValue: 1 }) page: number): Promise<OffersResponse> {
    const COUNT = 10
    const [items, totalCount] = await this.offerRepository.findAndCount(
      { take: COUNT, skip: (page - 1) * COUNT }
    )
    return { items, totalCount }

}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56080097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档