使用Sequelize打字稿的关联模型的别名

时间:2020-10-19 17:30:15

标签: node.js typescript orm associations sequelize-typescript

我有两个模型CompanyReviews。每个Company将有多个Reviews

这是Company模型

@Table()
export class Company extends Model<Company> {

  @Column({ type: DataType.INTEGER.UNSIGNED, primaryKey: true, autoIncrement: true })
  COMPANY_ID: number;

  @Column({ type: DataType.TEXT })
  Name: string;

  @HasMany(() => Review)
  reviews: Review[];
}

Reviews模型如下

@Table()
export class Review extends Model<Review> {
  @Column({ type: DataType.INTEGER.UNSIGNED, primaryKey: true, autoIncrement: true })
  REVIEW_ID: number;

  @ForeignKey(() => Company)
  @Column
  Company_ID: number;

  @Column({ type: DataType.TEXT })
  Review: string;

  @Column({ type: DataType.INT })
  rating: string;

  @Column({ type: DataType.TEXT })
  UserName: string;

  @BelongsTo(() => Company)
  Company: Company;
}

我正在尝试获取一家公司的所有评论列表。我到目前为止写的查询是

    const pagedData = await Review.findAndCountAll({
      attributes: [
        ['REVIEW_ID', 'id'],
        ['Review', 'feedback']
      ],
      include: [{
        model: Company,
        attributes: ['Name']
      }],
      limit,
      offset
    });

我得到的回复是

{
  "total": 2,
  "reviews": [
    {
      "id": 917004723,
      "feedback": "feedback 1",
      "company": {
        "Name": "www.acceleronpharma.com"
      }
    },
    {
      "id": 917004734,
      "feedback": "feedback 2",
      "company": {
        "Name": "http://www.accenture.com"
      }
    }
  ]
}

问题:

  1. 是否可以为关联的模型添加别名?喜欢而不是Name中的Company,我希望它是companyName或其他名称。
  2. 与其将其作为reviews数组中的对象拉出,还可以将其作为review对象本身中的属性拉出。
    {
      "id": 917004723,
      "feedback": "feedback 1",
      "companyName": "www.acceleronpharma.com"
    }

PS:请忽略大小写,我只是添加了一个我要解决的问题的示例。

0 个答案:

没有答案