Loopbackjs 在回送版本LB4中使用嵌套对象和数组创建模型

Loopbackjs 在回送版本LB4中使用嵌套对象和数组创建模型,loopbackjs,Loopbackjs,我第一次开始使用Loopback,我开始使用LB4,他们的最新版本。我希望根据我遵循的JSON模式创建一个包含嵌套对象和数组的模型,该模式允许我创建模式的基本值,但我需要在对象和数组中创建字段,但我找不到帮助我理解这一点的文档或文章 这是我试图创建LB4模型的JSON模式: "socialProfiles": { "facebook": { "linked": 1, "pullData": 1, "linkID": 4434343,

我第一次开始使用Loopback,我开始使用LB4,他们的最新版本。我希望根据我遵循的JSON模式创建一个包含嵌套对象和数组的模型,该模式允许我创建模式的基本值,但我需要在对象和数组中创建字段,但我找不到帮助我理解这一点的文档或文章

这是我试图创建LB4模型的JSON模式:

"socialProfiles": {
    "facebook": {
        "linked": 1,
        "pullData": 1,
        "linkID": 4434343,
        "profile": "https://www.facebook.com/FBURL",
        "registered": {
            "date": "2018-05-04T12:41:27.838Z",
            "verified": "2018-05-04T12:41:27.838Z",
            "by": {
                "id": 1,
                "user": "USER"
            }
        }
    },
}
使用LB4文档,我可以创建我的主字段
socialProfiles
,但我找不到在该对象中创建字段的位置。。。这是我的LB4型号代码

import {Entity, model, property} from '@loopback/repository';

@model()
export class Users extends Entity {

 @property({
    type: 'object',
 })
 socialProfiles?: object;

 constructor(data?: Partial<Users>) {
    super(data)
 }
}
从'@loopback/repository'导入{Entity,model,property};
@模型()
导出类用户扩展实体{
@财产({
类型:“对象”,
})
社会福利:对象;
构造函数(数据?:部分){
超级(数据)
}
}

如何执行此操作?

如果要将对象存储在模型本身中(不使用关系),可以使用以下内容创建接口:

export interface ISocialProfile {
    "linked": number,
    "pullData": number,
    "linkID": number,
    "profile": string,
    "registered": {
        "date": Timestamp,
        "verified": Timestamp,
        "by": {
            "id": number,
            "user": string
        }
    }
}
然后在您的模型中,只需添加以下类型:

socialProfiles?: {[name: string]: ISocialProfile};

感谢@angelwally,查看关系doco,它有hasMany和belongsTo,虽然我理解这个概念,但是否需要为模型中的所有/任何类型的对象/数组定义关系?我提出这个问题的原因是,我已经设计了大约40个端点,并且重复使用了相当多的模型和组件,但是在端点中仍然有一些是一次性使用的对象,我想确保我以最好的方法完成这项工作,以便轻松更新我的模型。。我可以创建多个模型并在上面的内容中引用它们吗?嗯,在决定时有两件事需要考虑。首先,
@property->type:object
将意味着模型将保存为对象(可能是数据库中的文本字段,具体取决于您的连接器)。那么这样做完全没问题。我上面写的只是一个键入,以强制执行代码在整个代码中是正确的,因此它对DB中的模型没有影响。另一件事是关系。如果您在某些情况下需要它们,它们是很好的(请参阅文档),但在您的情况下,它似乎没有必要(您不想使用此属性进行筛选或搜索,对吗?)完美,这正是我要寻找的解释和代码,谢谢@angelwally!