Câu trả lời ngắn gọn là không, không phải ở cấp độ TypeORM. Tuy nhiên, bạn có thể đạt được điều này trong mã ứng dụng của mình bằng cách sử dụng mã ValidateIf >
trình trang trí từ class-validator
:
@Column({ nullable: true })
@Exclude()
@IsNotEmpty()
@ValidateIf(u => !u.oAuthLogins || u.oAuthLogins.length === 0)
public password?: string;
@JoinColumn()
@IsArray()
@ValidateIf(u => !u.password)
@OneToMany(() => OAuthLogin, (provider: OAuthLogin) => provider.user, {
cascade: true,
})
public oAuthLogins?: OAuthLogin[];
Ở những nơi khác trong ứng dụng của bạn:
import { validate } from 'class-validator';
...
validate(user)
Nếu thực thể này đang vượt qua một bộ điều khiển, bạn cũng có thể sử dụng ValidationPipe
của NestJS để thực thi điều này tại bộ điều khiển hoặc ứng dụng
cấp độ:
// main.ts
app.useGlobalPipes(new ValidationPipe({ whitelist: true }));