node.js - typeORM: "meddelande": "Datatypen \"Object\" i \"...\" stöds inte av \"postgres\"-databasen."


Givet följande enhetsdefinition:

@Entity()
export class User extends BaseEntity {
  @Column({ nullable: true })
  name!: string | null;
  
  @Column()
  age!: number;
}

Följande fel uppstår:

typeORM:   "message": "Data type \"Object\" in \"User.name" is not supported by \"postgres\" database."

...

name: 'DataTypeNotSupportedError',
  message:
   'Data type "Object" in "User.name" is not supported by "postgres" database.' }

När man tittar på byggprocessen ser jag att metadata som genereras av TS adresserar det som ett objekt:

__decorate([
    typeorm_1.Column({ nullable: true }),
    __metadata("design:type", Object)
], User.prototype, "name", void 0);

Vad gör jag för fel?

Svar #1

Du måste ange en datatyp uttryckligen.

@Column({ type: 'varchar', nullable: true })
name: string | null;

Svar #2

Problemet härstammar från den här delen:

@Column({ nullable: true })
name!: string | null;

När man skapar en unionstyp kommer den reflekterade typen att vara Object. Ett enkelt sätt att övervinna detta är att göra något som:

@Column({ nullable: true })
name?: string;

Relaterade artiklar