Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从TypeForm属性装饰器获取值 从'typeorm'导入{PrimaryColumn,Column}; 导出类位置状态{ @PrimaryColumn({name:'location_id'}) locationId:string; @列({name:'area_code',类型:'int'}) 区号:号码; }_Javascript_Typescript_Typeorm - Fatal编程技术网

Javascript 如何从TypeForm属性装饰器获取值 从'typeorm'导入{PrimaryColumn,Column}; 导出类位置状态{ @PrimaryColumn({name:'location_id'}) locationId:string; @列({name:'area_code',类型:'int'}) 区号:号码; }

Javascript 如何从TypeForm属性装饰器获取值 从'typeorm'导入{PrimaryColumn,Column}; 导出类位置状态{ @PrimaryColumn({name:'location_id'}) locationId:string; @列({name:'area_code',类型:'int'}) 区号:号码; },javascript,typescript,typeorm,Javascript,Typescript,Typeorm,我花了几个小时试图找出如何从属性装饰器@Column()检索名称属性值location\u id和area\u code,但运气不好。我不确定是否有可能获得属性列表。从typeorm源代码(这里:,)判断,您可以通过全局变量typeormmetadaargsstorage(如window.typeormmetadaargsstorage或global.typeormmetadaargsstorage)访问各种内容。探索一下,我相信你会找到你想要的东西: const全局上下文=???//取决于你的

我花了几个小时试图找出如何从属性装饰器
@Column()
检索名称属性值
location\u id
area\u code
,但运气不好。我不确定是否有可能获得属性列表。

typeorm
源代码(这里:,)判断,您可以通过全局变量
typeormmetadaargsstorage
(如
window.typeormmetadaargsstorage
global.typeormmetadaargsstorage
)访问各种内容。探索一下,我相信你会找到你想要的东西:

const全局上下文=???//取决于你的环境
const property_to_look_for=`areaCode`
const name=global_context.typeormmetadaargsstorage
.栏目
.filter(col=>col.propertyName==property\u to\u look\u for&&col.target==LocationStatus)
.选项
名称
console.log(名称)
已更新

对于像我这样目前正在使用
Nest
的人,以下是我迄今为止所做的工作


从'typeorm'导入{getMetadataArgsStorage,InsertResult};
导出类PinLocationStatusRepository扩展存储库{
//列名称,则不应修改该值。
//例如,location\u id值“location\u ko\u 01”不会更改。
私有静态immutableColumnNames=['location_id',…];
找到私有静态可变列(名称:字符串):布尔值{
返回PinLocationStatusRepository.immutableColumnNames.every(colName=>colName!==name);
}
savePinLocation(状态:PinLocationStatus):承诺{
const columns=getMetadataArgsStorage()
.columns.filter(({target})=>target===PinLocationStatus)
.map(({options,propertyName})=>(!options.name?propertyName:options.name))
.reduce((列,名称)=>{
if(PinLocationStatusRepository.mutableColumnFound(名称)){
columns.push(name);
}
返回列;
}, []);
返回此值。createQueryBuilder()
.插入()
.into(PinLocationStatus)
.价值观(状态)
.orUpdate({overwrite:columns})/['area_code']
.execute();
}
}
  • @column()
    装饰器中提取列名
  • 筛选出一些列名称,其中的值必须保持不变
  • 将columns变量传递到
    overwrite
    属性中

  • 除非
    area\u code
    是不可变的列,否则您将得到正确的结果。

    将是合适的。@AluanHaddad,谢谢。。。但到目前为止,它真的被普遍接受了吗?
    关于MDN的实施进度部分并不乐观。是的。我倾向于多填充,但这不是一个可以多填充的功能。谢谢你的友好回答。我想编辑您的答案,但队列当前已满。我刚刚在您的答案下面添加了代码段。再次,非常感谢!