环回 4 @hasOne 关系

问题描述

我有一个关于 Loopback 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: string;


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

}

问题:为了使@hasOne 关系起作用,我必须添加字段:userId(另一个类的名称,以小写字母结尾,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: string;


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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...