我想使用TypeORM的findAndCount函数,它返回Promise<[Entity[], number]>进行分页。所以我有一个解析器:
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注释来注释这个解析器,如下所示:
@Query(returns => ???)然而,我不知道返回类型,我尝试了这个(当然不起作用,因为findAndCount返回的是什么):
@ObjectType()
class TestType {
@Field(type => [Offer])
offers: Offer[]
@Field()
count: number
}并尝试像这样使用它:@Query(returns => [TestType])和这个@Query(returns => TestType)。
发布于 2019-06-22 19:50:49
GraphQL不支持元组,因此需要创建一个响应对象类型:
@ObjectType()
class OffersResponse {
@Field(type => [Offer])
items: Offer[]
@Field(type => Int)
totalCount: number
}然后手动将元组映射到对象:
@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 }
}https://stackoverflow.com/questions/56080097
复制相似问题