首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“无法读取未定义的属性'tablePath‘”(类型为ORM )

“无法读取未定义的属性'tablePath‘”(类型为ORM )
EN

Stack Overflow用户
提问于 2020-02-10 04:17:25
回答 1查看 2.4K关注 0票数 5
代码语言:javascript
复制
    {
        "name": "TypeError"
"message": "Cannot read property 'tablePath' of undefined",
        "stack": "TypeError: Cannot read property 'tablePath' of undefined\n    at C:\\working\\Hianfa\\Hianfa\\api\\src\\query-builder\\SelectQueryBuilder.ts:1500:76\n    at Array.map (<anonymous>)\n    at SelectQueryBuilder.createJoinExpression (C:\\working\\Hianfa\\Hianfa\\api\\src\\query-builder\\SelectQueryBuilder.ts:1462:57)\n    at SelectQueryBuilder.getQuery (C:\\working\\Hianfa\\Hianfa\\api\\src\\query-builder\\SelectQueryBuilder.ts:54:21)\n    at SelectQueryBuilder.QueryBuilder.getQueryAndParameters (C:\\working\\Hianfa\\Hianfa\\api\\src\\query-builder\\QueryBuilder.ts:392:28)\n    at SelectQueryBuilder.<anonymous> (C:\\working\\Hianfa\\Hianfa\\api\\src\\query-builder\\SelectQueryBuilder.ts:1948:40)\n    at step (C:\\working\\Hianfa\\Hianfa\\api\\node_modules\\tslib\\tslib.js:136:27)\n    at Object.next (C:\\working\\Hianfa\\Hianfa\\api\\node_modules\\tslib\\tslib.js:117:57)\n    at C:\\working\\Hianfa\\Hianfa\\api\\node_modules\\tslib\\tslib.js:110:75\n    at new Promise (<anonymous>)"
    }

在尝试使用映射表映射两个表时,我遇到了这个错误。

供应商模型(表1)

代码语言:javascript
复制
@ManyToMany(type => VendorToCategory, vendorToCategory => vendorToCategory.vendor)
// @JoinColumn({name: 'vendor_vendor_category_id'})
public vendorToCategory: VendorToCategory[];

供应商类别模型(表2)

代码语言:javascript
复制
 @ManyToMany(type => VendorToCategory, vendorToCategory => vendorToCategory.vendorCategory)
    @JoinColumn({name: 'vendor_vendor_category_id'})
    public vendorToCategory: VendorToCategory[];

映射表(供应商到类别)

代码语言:javascript
复制
   @ManyToMany(type => Vendor, vendor => vendor.vendorToCategory)
    @JoinColumn({ name: 'vendor_id' })
    public vendor: Vendor[];

@ManyToMany(type => VendorCategory, vendorCategory => vendorCategory.vendorToCategory)
@JoinColumn({ name: 'vendor_category_id' })
public vendorCategory: VendorCategory[];

请帮我解决这个错误!

EN

回答 1

Stack Overflow用户

发布于 2020-08-11 07:51:23

您的问题与@JoinColumn装饰器的错误使用有关;您应该在处理@ManyToMany关系时使用@JoinTable

因此,不是这样:

代码语言:javascript
复制
@ManyToMany(type => VendorToCategory, vendorToCategory => 
vendorToCategory.vendorCategory)
@JoinColumn({name: 'vendor_vendor_category_id'})
public vendorToCategory: VendorToCategory[];`

你应该这样写:

代码语言:javascript
复制
@ManyToMany(type => VendorToCategory, vendorToCategory => vendorToCategory.vendorCategory)
@JoinTable({
   name: "vendor_vendor_category_id",
   joinColumn: {
    name: "vendorCategory",
    referencedColumnName: "id"
   },
   inverseJoinColumn: {
    name: "vendor",
    referencedColumnName: "id"
    }})
public vendor: Vendor[];`

当涉及到处理关系时,TypeORM文档并不那么具体,但它们确实提供了一些有用的示例。所以,如果你想要一个详细的答案,可以看看them

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60140903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档