【问题标题】:how to get typeorm manytomany relation column count如何获取typeorm manytomany关系列数
【发布时间】: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的某些产品。

表格图片示例

TableImageExample

我想获取 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 =&gt; Product, product =&gt; product.likedUsers)。在产品实体中相同
  • 很高兴为您提供帮助 :) 我将此作为答案发布。请将其标记为正确答案,以便其他遇到类似问题的人有解决方案。

标签: nestjs typeorm


【解决方案1】:

我认为您需要在 ManyToMany 装饰器中告诉 typeorm 的“关系属性”。像这样:@ManyToMany(type =&gt; Product, product =&gt; product.likedUsers)

在产品实体中相同。

您可以在the documentation阅读更多相关信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多