PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

TypeORM condicional anulável?


A resposta curta é não, não no nível do TypeORM. No entanto, você pode conseguir isso no código do aplicativo usando o ValidateIf decorador de 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[];

Em outro lugar em seu aplicativo:
import { validate } from 'class-validator';
...
validate(user)

Se esta entidade estiver cruzando um controlador, você também pode usar o ValidationPipe do NestJS para impor isso no controlador ou aplicativo nível:
// main.ts
app.useGlobalPipes(new ValidationPipe({ whitelist: true }));