nestjs - 如何获取typeorm manytomany关系列数
问题描述
用户实体
@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>)
解决方案
我认为您需要在 ManyToMany 装饰器中告诉 typeorm 的“关系属性”。像这样:@ManyToMany(type => Product, product => product.likedUsers)
在产品实体中也是如此。
您可以在文档中阅读有关它的更多信息
推荐阅读
- file - 如何优化从 Go 中的文本文件中查找字谜
- java - 想从firebase检索这些插槽的值,将其存储在String n检查中,如果该值是'booked',则禁用显示消息的按钮
- jmeter-5.0 - 使用 BeanShell 脚本拆分 Json 响应正文
- java - 将字符串转换为 ISO 8601 日期时间格式的 Java 日期
- excel - 如何复制具有特定范围的所有值和工作表样式?
- c - 考虑开关时卡住了,while 循环在其中添加一个句子和字符
- shipping - Shipstation 因违反协议而被 Incapsula 封锁
- angular - Angular Charts.js 渲染一个空白画布
- python - sed 与 python 和许多参数
- html - 下拉菜单上的jinja2 for循环