将 NestJs 上的参数值更改为另一个现有的 class
Change parameters values on NestJs to another existant class
我有两个带有一些字符串参数的 classes,我想将参数类型重构为 class。
export class CreateUpdateParcoursDto {
@IsOptional()
@IsString()
@IsNotEmpty()
startingNode: string;
@IsNotEmpty()
@ValidateNested()
@Type(() => Category)
category: Category;
}
@Entity()
export class Node {
@PrimaryGeneratedColumn('uuid')
id: string;
// Exp: name = "Validation de l'intention du cient"
@Column({ unique: true })
name: string;
// Relation n-> n avec l'objet Connection
@ManyToMany(() => Connection, (connection) => connection.nodes, {
cascade: true,
eager: true,
})
@JoinTable()
connections: Connection[];
// Relation n-> 1 avec l'objet Action
@ManyToOne(() => Action, (action) => action.nodes)
action: Action;
}
我想将 startingNode string
类型更改为 Node
类型,但我不知道应该在我的 controller
文件中使用或更改哪些关系,service
文件和 repository
文件
转到您的 main.ts 文件并添加 tihs 行
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
logger: ['debug', 'error'],
cors: true
});
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
app.useGlobalPipes(new ValidationPipe({
transform: true // this line here in your validationPipe
}));
await app.listen(3000);
}
bootstrap();
然后你可以进入你的dto文件并调用@Transform装饰器
export class CreateUpdateParcoursDto {
@IsOptional()
@IsString()
@IsNotEmpty()
@Transform(({ value }) => new Node({name: value})
startingNode: Node;
@IsNotEmpty()
@ValidateNested()
@Type(() => Category)
category: Category;
}
最后一步,您可以在实体构造函数中获取初始参数
@Entity()
export class Node {
constructor({name}) {
this.name = name
}
@PrimaryGeneratedColumn('uuid')
id: string;
// Exp: name = "Validation de l'intention du cient"
@Column({ unique: true })
name: string;
// Relation n-> n avec l'objet Connection
@ManyToMany(() => Connection, (connection) => connection.nodes, {
cascade: true,
eager: true,
})
@JoinTable()
connections: Connection[];
// Relation n-> 1 avec l'objet Action
@ManyToOne(() => Action, (action) => action.nodes)
action: Action;
}
我有两个带有一些字符串参数的 classes,我想将参数类型重构为 class。
export class CreateUpdateParcoursDto {
@IsOptional()
@IsString()
@IsNotEmpty()
startingNode: string;
@IsNotEmpty()
@ValidateNested()
@Type(() => Category)
category: Category;
}
@Entity()
export class Node {
@PrimaryGeneratedColumn('uuid')
id: string;
// Exp: name = "Validation de l'intention du cient"
@Column({ unique: true })
name: string;
// Relation n-> n avec l'objet Connection
@ManyToMany(() => Connection, (connection) => connection.nodes, {
cascade: true,
eager: true,
})
@JoinTable()
connections: Connection[];
// Relation n-> 1 avec l'objet Action
@ManyToOne(() => Action, (action) => action.nodes)
action: Action;
}
我想将 startingNode string
类型更改为 Node
类型,但我不知道应该在我的 controller
文件中使用或更改哪些关系,service
文件和 repository
文件
转到您的 main.ts 文件并添加 tihs 行
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
logger: ['debug', 'error'],
cors: true
});
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
app.useGlobalPipes(new ValidationPipe({
transform: true // this line here in your validationPipe
}));
await app.listen(3000);
}
bootstrap();
然后你可以进入你的dto文件并调用@Transform装饰器
export class CreateUpdateParcoursDto {
@IsOptional()
@IsString()
@IsNotEmpty()
@Transform(({ value }) => new Node({name: value})
startingNode: Node;
@IsNotEmpty()
@ValidateNested()
@Type(() => Category)
category: Category;
}
最后一步,您可以在实体构造函数中获取初始参数
@Entity()
export class Node {
constructor({name}) {
this.name = name
}
@PrimaryGeneratedColumn('uuid')
id: string;
// Exp: name = "Validation de l'intention du cient"
@Column({ unique: true })
name: string;
// Relation n-> n avec l'objet Connection
@ManyToMany(() => Connection, (connection) => connection.nodes, {
cascade: true,
eager: true,
})
@JoinTable()
connections: Connection[];
// Relation n-> 1 avec l'objet Action
@ManyToOne(() => Action, (action) => action.nodes)
action: Action;
}