Tìm kiếm trang web

node.js - typeORM: "message": "Kiểu dữ liệu \"Object\" trong \"...\" không được cơ sở dữ liệu \"postgres\" hỗ trợ."


Cho định nghĩa thực thể sau:

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

Lỗi sau xuất hiện:

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.' }

Khi nhìn vào bản build, tôi thấy rằng metadata được phát ra bởi TS đề cập đến nó như một đối tượng:

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

Tôi đang làm gì sai?

Câu trả lời #1

Bạn cần phải chỉ định rõ kiểu dữ liệu.

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

Câu trả lời #2

Vấn đề xuất phát từ phần này ngay đây:

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

Khi tạo một kiểu hợp nhất, kiểu phản chiếu sẽ là Object. Một cách đơn giản để khắc phục điều này là làm như sau:

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

Bài viết liên quan