CommandHandler 未找到命令负载异常
CommandHandler not found exception with command payload
我尝试使用命令 DTO,但无法识别他的处理程序。
当我记录 DTO 时,它是一个没有 CreateUserCommand
签名的简单对象 {...}
。
这是我的控制器:
async index(@Body() createUserCommand: CreateUserCommand): Promise<User> {
console.log(createUserCommand);
return await this.commandBus.execute(createUserCommand);
}
我得到以下输出:
{
firstName: 'xxx',
lastName: 'xxx',
email: 'xxx@xxx.com',
password: 'xxx'
}
当我尝试直接使用它正在运行的命令时:
const command = new CreateUserCommand();
command.firstName = 'xxx';
command.lastName = 'xxx';
command.email = 'xxx@xxx.com';
command.password = 'xxx';
return await this.commandBus.execute(createUserCommand);
以下输出:
CreateUserCommand {
firstName: 'xxx',
lastName: 'xxx',
email: 'xxx@xxx.com',
password: 'xxx'
}
是否可以使用 DTO 作为命令处理程序?
如果你使用 @Body
它将产生一个普通的 javascript 对象而不是你的 dto class 的实例。您可以使用 class-transformer
及其 plainToClass(CreateUserCommand, createUserCommand)
方法实际创建 class.
的实例
如果您使用 ValidationPipe
如果您传递选项 transform: true
:
它可以自动将您的普通对象转换为 class
@UsePipes(new ValidationPipe({ transform: true }))
async index(@Body() createUserCommand: CreateUserCommand): Promise<User> {
console.log(createUserCommand);
return await this.commandBus.execute(createUserCommand);
}
我尝试使用命令 DTO,但无法识别他的处理程序。
当我记录 DTO 时,它是一个没有 CreateUserCommand
签名的简单对象 {...}
。
这是我的控制器:
async index(@Body() createUserCommand: CreateUserCommand): Promise<User> {
console.log(createUserCommand);
return await this.commandBus.execute(createUserCommand);
}
我得到以下输出:
{
firstName: 'xxx',
lastName: 'xxx',
email: 'xxx@xxx.com',
password: 'xxx'
}
当我尝试直接使用它正在运行的命令时:
const command = new CreateUserCommand();
command.firstName = 'xxx';
command.lastName = 'xxx';
command.email = 'xxx@xxx.com';
command.password = 'xxx';
return await this.commandBus.execute(createUserCommand);
以下输出:
CreateUserCommand {
firstName: 'xxx',
lastName: 'xxx',
email: 'xxx@xxx.com',
password: 'xxx'
}
是否可以使用 DTO 作为命令处理程序?
如果你使用 @Body
它将产生一个普通的 javascript 对象而不是你的 dto class 的实例。您可以使用 class-transformer
及其 plainToClass(CreateUserCommand, createUserCommand)
方法实际创建 class.
如果您使用 ValidationPipe
如果您传递选项 transform: true
:
@UsePipes(new ValidationPipe({ transform: true }))
async index(@Body() createUserCommand: CreateUserCommand): Promise<User> {
console.log(createUserCommand);
return await this.commandBus.execute(createUserCommand);
}