仅使用 typegraphql 中的类型名称定义 arg 类型
Define an arg type using just the typename in typegraphql
我们有一个使用通用类型创建类型的工厂:
export function GenericResolverFactory(props: FactoryProps) {
@GqlType(`${props.model.name}Response`)
class ModelPaginatedResponse extends ResponseFactory(props.modelClass) {
// you can add more fields here if you need
}
@GqlInputType(`${props.model.name}CreateInput`)
class CreateInput extends CreateInputFactory(props.createInput) { }
@Resolver(_of => props.modelClass, { isAbstract: true })
abstract class GenericResolver {
@Mutation(_returns => props.modelClass, { name: `create${startCaseName}` })
create(@Arg('data') data: CreateInput, @Ctx() _context: UserContext) {
return this.__getService().create(data);
}
}
return ModelResolverClass;
}
现在我们必须像这样声明输入参数:Arg('input') input: UpdateInput
由于我的类型是使用工厂生成的,因此 类 在(不是运行时?)时不可用。有没有办法引用那些动态生成的输入?有没有办法做这样的事情:Arg('input') input: resolveType('ProductCreateInput')
假设 resolveType
returns 一个 class 装饰有 @InputType
和 @Field
s:
@Arg('input', type => resolveType('ProductCreateInput')) input: ICreateInput`
你只需要提供一个运行时值作为@Arg
装饰器的第二个参数
我们有一个使用通用类型创建类型的工厂:
export function GenericResolverFactory(props: FactoryProps) {
@GqlType(`${props.model.name}Response`)
class ModelPaginatedResponse extends ResponseFactory(props.modelClass) {
// you can add more fields here if you need
}
@GqlInputType(`${props.model.name}CreateInput`)
class CreateInput extends CreateInputFactory(props.createInput) { }
@Resolver(_of => props.modelClass, { isAbstract: true })
abstract class GenericResolver {
@Mutation(_returns => props.modelClass, { name: `create${startCaseName}` })
create(@Arg('data') data: CreateInput, @Ctx() _context: UserContext) {
return this.__getService().create(data);
}
}
return ModelResolverClass;
}
现在我们必须像这样声明输入参数:Arg('input') input: UpdateInput
由于我的类型是使用工厂生成的,因此 类 在(不是运行时?)时不可用。有没有办法引用那些动态生成的输入?有没有办法做这样的事情:Arg('input') input: resolveType('ProductCreateInput')
假设 resolveType
returns 一个 class 装饰有 @InputType
和 @Field
s:
@Arg('input', type => resolveType('ProductCreateInput')) input: ICreateInput`
你只需要提供一个运行时值作为@Arg
装饰器的第二个参数