首页 > 解决方案 > Typescript typeorm:如何获取注释参数

问题描述

我们在我们的项目中使用 typeorm 并且有这样的实体:

@Entity({ name: 'contacts', database: Schemas.interfax75 })
export class OutgoingLog {
    @PrimaryGeneratedColumn({ name: 'TransactionID' })
    transactionId: number;
    @Column({ name: 'SubmitTime', type: 'datetime', default: '0000-00-00 00:00:00' })
    submitTime: Date;
    // more properties here
}

我想获取注释的名称属性。transactionId因此,知道我想要获取字符串的属性名称TransactionID。是否可以在打字稿中做到这一点?

我知道有 package reflect-metadata,但它的文档很差,我真的不明白是否可以使用它。

这就是生成的js代码。

var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};

//...
__decorate([
    typeorm_1.PrimaryGeneratedColumn({ name: 'TransactionID' }),
    __metadata("design:type", Number)
], OutgoingLog.prototype, "transactionId", void 0);

标签: typescripttypeormtypescript-decorator

解决方案


您可以简单地使用 TypeORM API

getConnection()
  .getMetadata(OutgoingLog)
  .ownColumns
  .map(column => {
    // Do what you want with column
    // For example, log it into console
    // And check all fields — `properyName` and others
    console.log(column)
  })

我的建议来源——https: //github.com/typeorm/typeorm/issues/1764


推荐阅读