sql >> Databasteknik >  >> RDS >> PostgreSQL

TypeORM villkorlig nullbar?

Det korta svaret är nej, inte på TypeORM-nivå. Du kan dock uppnå detta i din applikationskod med ValidateIf dekoratör från 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[];

På andra ställen i din ansökan:

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

Om den här enheten korsar en styrenhet kan du också använda NestJS:s ValidationPipe att upprätthålla detta hos kontrollanten eller applikationen nivå:

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



  1. Hur lagrar jag uuid som nummer?

  2. SQL:hämta N:te objekt i varje grupp

  3. Så här gör du om duplicerar nyckeluppdatering

  4. Hur väljer man en rad med maximalt värde för en kolumn i MySQL?