PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

TypeORM bedingt nullable?

Die kurze Antwort lautet nein, nicht auf TypeORM-Ebene. Sie können dies jedoch in Ihrem Anwendungscode mit dem ValidateIf Dekorateur von 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[];

An anderer Stelle in Ihrer Bewerbung:

import { validate } from 'class-validator';
...
validate(user)

Wenn diese Entität einen Controller kreuzt, können Sie auch ValidationPipe von NestJS verwenden um dies beim Controller oder der Anwendung durchzusetzen Stufe:

// main.ts
app.useGlobalPipes(new ValidationPipe({ whitelist: true }));