环回 4 @hasOne 关系

Loopback 4 @hasOne relation

我对环回 4 和@hasOne 关系有疑问。我已经阅读了文档,但我没有找到它。

用户模型:

@model({ settings: {} })
export class User extends Entity {
  @property({
    type: 'string',
    id: true,
    required: true,
  })
  id: string;


  @hasOne(() => Settings)
  settings: Settings;


  constructor(data?: Partial<UserSettings>) {
    super(data);
  }

}

模型设置

@model({ settings: {} })
export class Settings extends Entity {
  @property({
    type: 'string',
    id: true,
    required: true,
  })
  id: string;


 @property({
  type: 'string',
 })
 userId: string;
    
 constructor(data?: Partial<UserSettings>) {
  super(data);
 }

}

问题:为了使@hasOne 关系正常工作,我必须添加字段:userId(另一个 class 的小写名称,最后带有 id)。有没有办法使用以另一种方式调用的字段?我如何表明关系与字段 id 相关?为什么我必须使用 yes 或 yes 一个名为 nameoftheothermodel + Id 的字段?

提前致谢

最佳

LoopBack 4 关系装饰器接受关系元数据的附加参数:

用户模型

@model({ settings: {} })
export class User extends Entity {
  @property({
    type: 'string',
    id: true,
    required: true,
  })
  id: string;


  @hasOne(() => Settings, {
    keyTo: 'myCustomForeignKey' // Add this
  })
  settings: Settings;


  constructor(data?: Partial<UserSettings>) {
    super(data);
  }
}

设置模型

@model({ settings: {} })
export class Settings extends Entity {
  @property({
    type: 'string',
    id: true,
    required: true,
  })
  id: string;


 @property({
  type: 'string',
 })
 myCustomForeignKey: string; // Custom 'foreign key'
    
 constructor(data?: Partial<UserSettings>) {
  super(data);
 }
}