【问题标题】:TypeOrm : DataTypeNotSupportedError thrown during defining one-one relationships in PostgresTypeOrm:在 Postgres 中定义一对一关系时抛出 DataTypeNotSupportedError
【发布时间】:2020-05-09 20:35:35
【问题描述】:

我正在尝试使用带有 JS 和 Babel 的 TypeOrm 定义一个简单的一对一关系(用于类装饰器)

这是两个模型:

@Entity()
export default class Account {
    // ID Columns etc. 
    ...

    @OneToOne(type => User, user => user.account) 
    @JoinColumn()
    user;
}
@Entity()
export default class User {
    // ID Columns etc. 
    ...

    @OneToOne(type => Account account => account.user) 
    account;
}

此设置会引发此错误 -

DataTypeNotSupportedError: Data type "" in "User.account" is not supported by "postgres" database.
    at new DataTypeNotSupportedError (/workspace/node_modules/typeorm/error/DataTypeNotSupportedError.js:7:28)
    at /workspace/node_modules/typeorm/metadata-builder/EntityMetadataValidator.js:74:27
    at Array.forEach (<anonymous>)
    at EntityMetadataValidator.validate (/workspace/node_modules/typeorm/metadata-builder/EntityMetadataValidator.js:71:36)
    at /workspace/node_modules/typeorm/metadata-builder/EntityMetadataValidator.js:42:74
    at Array.forEach (<anonymous>)
    at EntityMetadataValidator.validateMany (/workspace/node_modules/typeorm/metadata-builder/EntityMetadataValidator.js:42:25)
    at Connection.buildMetadatas (/workspace/node_modules/typeorm/connection/Connection.js:498:33)
    at Connection.<anonymous> (/workspace/node_modules/typeorm/connection/Connection.js:127:30)
    at step (/workspace/node_modules/tslib/tslib.js:139:27)

我在https://github.com/typeorm/babel-example查看了文档和 js + babel 示例

示例中的实体看起来与我定义的实体相同,但仍然失败。

有没有其他方法可以使用 typeorm 处理一对一的关系?或者我该如何解决这个问题?

【问题讨论】:

  • 嘿,你解决了这个问题吗?我有同样的问题

标签: postgresql typeorm


【解决方案1】:

这里:

@OneToOne(type => Account account => account.user) 
account;

缺少一个逗号。另外,我建议你给属性一个类型,像这样:

@OneToOne(type => Account, account => account.user) 
account: Account;

【讨论】:

    【解决方案2】:
    @Entity()
    export default class Account {
        // ID Columns etc. 
        ...
    
        @OneToOne(()=> User, (user) => user.account) 
        @JoinColumn()
        user!: User;
    }
    
    @Entity()
    export default class User {
        // ID Columns etc. 
        ...
    
        @OneToOne(()=> Account, (account) => account.user) 
        account!: Account;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2018-07-30
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多