javascript - TypeORM 自定义装饰器

标签 javascript node.js typescript typeorm

我希望能够向我的实体模型添加自定义装饰器,以标记用户元数据迁移的特定字段。

例如:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
import { CreatedBy } from "../subscribers/test";

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id!: number;

    @Column()
    name!: string;

    @Migrate()
    userValue!: string;
 
    @Migrate()
    specficValue!: string;

}

其中 migrate 可能类似于 Column 装饰器,但我可以采用 User 模型,并找到具有 migrate 装饰器的所有属性,以便我知道哪些属性插入前进。

有没有办法在 TypeORM 中实现这一点?

感谢您提供的所有帮助。

最佳答案

检查以下 github typeorm 问题: https://github.com/typeorm/typeorm/issues/2711

具体来说,我会检查“ColumnCommonOptions”装饰器的工作原理: https://github.com/typeorm/typeorm/blob/master/src/decorator/options/ColumnCommonOptions.ts

看起来很简单:

// MigrateDecorator.ts

import { getMetadataArgsStorage } from "typeorm";
//Optional
import { MigrateOptionsInterface } from './MigrateOptionsInterface'

 export function MigrateDecorator(options?: MigrateOptionsInterface): Function { 
     return function (object: Object, propertyName: string) { 
         getMetadataArgsStorage().columns.push({
           propertyName,
           migrate: options.migrate || false // just an example
         }); 
     }; 
 } 

关于javascript - TypeORM 自定义装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66555892/

相关文章:

javascript - 查找 .CSV 中的唯一值

javascript - ipython 等效于 node.js 的 javascript/coffeescript?

javascript - 将附加参数传递给回调函数

angular - 类型脚本错误属性在类型上不存在

javascript - 逻辑 if 差异

reactjs - 如何扩展 JSX.IntrinsicElements ['div' ]? TS2499

javascript - 在div中加载外部php文件时如何控制两个滚动条出现在单个屏幕上

javascript - 在 IE 8、9 和 10 上,document 是哪个类的实例?

javascript - knockout.js 中的双向焦点绑定(bind)

javascript - 在不同的 div 和类中交换相同的文本