问题描述
我有一个关于 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);
}
}