【发布时间】:2021-10-17 07:42:10
【问题描述】:
用户实体
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(type => Product)
@JoinTable()
likedProducts: Product[]
}
产品实体
export class Product {
@PrimaryGeneratedColumn()[enter image description here][1]
id: number;
@Column()
name: string;
@ManyToMany(type => User)
likedUsers: User[];
}
我想知道有多少用户喜欢Product Entity的某些产品。
表格图片示例
我想获取 productId 为 10 的列数。 在某些情况下,您不能移动 JoinTable。
我试过了
const product = await this.products.findOne(id, {
relations: ['likedUsers'],
});
console.log(product.likedUsers.length);
结果
TypeError: Cannot read property 'tablePath' of undefined
at /Users/apple/Documents/project/monster-backend/src/query-builder/SelectQueryBuilder.ts:1539:76
at Array.map (<anonymous>)
at SelectQueryBuilder.createJoinExpression (/Users/apple/Documents/project/monster-backend/src/query-builder/SelectQueryBuilder.ts:1498:57)
at SelectQueryBuilder.getQuery (/Users/apple/Documents/project/monster-backend/src/query-builder/SelectQueryBuilder.ts:58:21)
at SelectQueryBuilder.QueryBuilder.getQueryAndParameters (/Users/apple/Documents/project/monster-backend/src/query-builder/QueryBuilder.ts:440:28)
at SelectQueryBuilder.<anonymous> (/Users/apple/Documents/project/monster-backend/src/query-builder/SelectQueryBuilder.ts:2092:40)
at step (/Users/apple/Documents/project/monster-backend/node_modules/tslib/tslib.js:143:27)
at Object.next (/Users/apple/Documents/project/monster-backend/node_modules/tslib/tslib.js:124:57)
at /Users/apple/Documents/project/monster-backend/node_modules/tslib/tslib.js:117:75
at new Promise (<anonymous>)
【问题讨论】:
-
我认为你需要告诉 typeorm
ManyToMany装饰器中的“关系属性”。像这样@ManyToMany(type => Product, product => product.likedUsers)。在产品实体中相同 -
很高兴为您提供帮助 :) 我将此作为答案发布。请将其标记为正确答案,以便其他遇到类似问题的人有解决方案。