我有一個簡單的控制器:
@Patch('/:userId')
public async updateUser(
@Param('userId') userId: string,
@Body() userUpdate: UpdateUserDto): Promise<any> {
await this.usersService.update(userId, userUpdate);
}
UpdateUserDto 是:
import { IsEmail,IsString, IsOptional, MaxLength, IsNotEmpty} from "class-validator";
export class UpdateUserDto{
@IsEmail()
@IsOptional()
email:string;
@IsString()
@IsOptional()
password:string;
@IsString()
@MaxLength(30)
@IsNotEmpty()
@IsOptional()
name: string;
@IsString()
@MaxLength(40)
@IsNotEmpty()
@IsOptional()
username: string;
}
所有欄位都是可選的以創建部分更新。
如果我使用所有欄位,我的單元測驗中沒有任何錯誤
it('test', async () => {
const users = await controller.updateUser('10',{name: "testname",username:"fakeUser",email:"email",password:"S"});
});
但如果我使用它的一部分,我會得到一個錯誤,比如:
it('test', async () => {
const users = await controller.updateUser('10',{name: "testname",email:"email",password:"S"});
'{ name: string; 型別的引數 電子郵件:字串;密碼:字串;}' 不可分配給“UpdateUserDto”型別的引數。型別 '{ name: string; 中缺少屬性 'username' 電子郵件:字串;密碼:字串;}' 但在“UpdateUserDto”型別中是必需的。});
uj5u.com熱心網友回復:
如果password是可選的(即,可以是undefined),則告訴 TS 它是:password?: string
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437523.html
上一篇:服務中的測驗存盤庫
