[英]How to do a Field Resolver for a Union Type in type-graphql
考慮以下
堆棧是 type-graphql / type-orm / postgres
我使用單表 Inheritance (STI) 和聯合類型來表示多種提要類型。
一切都很好——直到我想添加一個字段解析器——我找不到讓它工作的方法。
看起來您無法將接口類型傳遞給 @Resolver
一些代碼片段來說明:
抽象的頂級實體
@InterfaceType()
@Entity({ orderBy: { createdAt: 'DESC' } })
@TableInheritance({ column: { type: 'varchar', name: 'type' } })
export abstract class FeedItem {
@Field(() => ID)
@PrimaryGeneratedColumn('uuid')
id: string
@Field()
@Column({ nullable: false })
type: string
@Field(() => Customer, { nullable: true })
@ManyToOne(
() => Customer,
customer => customer.feedItems,
{ onDelete: 'CASCADE' }
)
customer: Lazy<Customer>
@Field(() => [FeedItemComment])
@OneToMany(
() => FeedItemComment,
feedItemComment => feedItemComment.feedItem,
{ lazy: true }
)
comments: Lazy<FeedItemComment[]>
解析器
export const FeedResultUnion = createUnionType({
name: 'FeedItemResult', // the name of the GraphQL union
types: [AuthoredFeedItem, MilestoneFeedItem, TaskFeedItem, AssessmentFeedItem, WeeklySummaryFeedItem], // array of object types classes
@Resolver(() => FeedItem) // <---- this does not work, nor does FeedItemResult
export class FeedItemResolver {
// would love to do something like the following, but can't ...
@Authorized()
@FieldResolver(() => CommentsResponse)
async comments(@Root() feedItem: FeedItem) {
const [feedItems, count] = await getRepository(FeedItemComment).findAndCount({
where: {
feedItem,
},
order: { createdOn: 'DESC' },
})
return {
items: feedItems,
count,
}
}
}
})
誰能給我指出一條通往勝利的道路?!
我也遇到了@FieldResolver()
的問題我剛剛在 tsconfig.json 中進行了更改,我將"target": "es5"
更改為"target": "es6"
type-graphql 文檔說您必須配置 tsconfig.json 才能使其工作
我希望我有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.