LoopbackJS中如何选择外键关联的字段?
如何配置HasMany关联的外键与关联字段
嗨,我来帮你搞清楚这个关联配置的问题!
首先咱们先明确两个核心概念,对应你用的这种ORM关联逻辑:
foreignKey:这个参数填的是子表(也就是你的ProductTag表)中用来指向主表(Product)的字段名称,比如ProductTag里专门存Product ID的productId字段。- 主表的关联字段(比如你想用来关联的Product.id):绝大多数ORM默认会用主表的主键(也就是你的
id)来建立关联,不需要额外配置,除非你想改用其他字段(比如sku)。
针对你的需求的具体配置
你的需求是用Product表的id作为关联字段,配置起来很简单:
假设你的ProductTag表中有一个名为productId的字段(用来存储对应的Product的id),那Product模型的关联配置应该写成这样:
{ // Product 模型配置 "relations": { "productTags": { "type": "hasMany", "model": "ProductTag", "foreignKey": "productId" // 这里填ProductTag中关联Product.id的字段名 } } }
额外说明(如果需要自定义主表关联字段)
如果哪天你想改用Product表的sku(唯一字段)来关联,而不是id,那你需要加上一个额外参数(不同ORM的参数名可能略有不同,比如LoopBack里叫keyFrom,有些ORM叫sourceKey),配置会变成这样:
{ // Product 模型配置 "relations": { "productTags": { "type": "hasMany", "model": "ProductTag", "foreignKey": "productSku", // ProductTag中存储Product.sku的字段名 "keyFrom": "sku" // 指定主表用sku字段来关联 } } }
总结一下:你现在想用Product的id关联,默认就会用主键,只需要把foreignKey设为ProductTag中对应存储Product id的字段名就行啦!
内容的提问来源于stack exchange,提问作者Mon
相关产品推荐
相关产品推荐

