Prabhjyot Gambhir
Prabhjyot Gambhir

Reputation: 201

"Cannot read property 'tablePath' of undefined" ( TYPE ORM )

    {
        "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>)"
    }

I am getting this error, while trying to map two tables with the mapping table.

VENDOR MODEL (TABLE 1)

@ManyToMany(type => VendorToCategory, vendorToCategory => vendorToCategory.vendor)
// @JoinColumn({name: 'vendor_vendor_category_id'})
public vendorToCategory: VendorToCategory[];

VENDOR CATEGORY MODEL (TABLE 2)

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

MAPPING TABLE (VENDOR TO CATEGORY)

   @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[];

Please help me out with this error!

Upvotes: 20

Views: 15252

Answers (2)

The Mechanic
The Mechanic

Reputation: 2329

A bit late but will be useful for others

Make sure you do not forget both inverseSide functions Forgetting one of those caused the problem for me.

Use JoinTable only one side

Upvotes: 5

jmj0502
jmj0502

Reputation: 397

Your problem is related to the wrong use of the @JoinColumn decorator; you should use @JoinTable while working with @ManyToMany relationships.

So, instead of this:

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

You should write:

@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[];`

The TypeORM docs aren't that specific when it comes to deal with relations, but they do provide some useful examples. So take a look at them if you want a detailed answer.

Upvotes: 23

Related Questions