Reputation: 6902
Given the following entity definition:
@Entity()
export class User extends BaseEntity {
@Column({ nullable: true })
name!: string | null;
@Column()
age!: number;
}
The following error appears:
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.' }
When looking at the build, I see that the metadata that's emitted by TS addresses it as object:
__decorate([
typeorm_1.Column({ nullable: true }),
__metadata("design:type", Object)
], User.prototype, "name", void 0);
What am I doing wrong?
Upvotes: 35
Views: 21873
Reputation: 6902
The issue stems from this part right here:
@Column({ nullable: true })
name!: string | null;
When creating a union type, the reflected type will be Object
.
An easy way to overcome it will be to do something like:
@Column({ nullable: true })
name?: string;
Upvotes: 13
Reputation: 795
You need to provide a data type explicitly.
@Column({ type: 'varchar', nullable: true })
name: string | null;
Upvotes: 67