Loopbackjs 环回从同一关系访问超级模型和扩展模型
我使用的是环回3,我有以下三种型号:Loopbackjs 环回从同一关系访问超级模型和扩展模型,loopbackjs,extends,relation,Loopbackjs,Extends,Relation,我使用的是环回3,我有以下三种型号: UserFile.json { "name": "UserFile", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true }, "properties": { "id": { "type": "number", "id": true, "generated": true
UserFile.json
{
"name": "UserFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"id": true,
"generated": true
},
"name": {
"type": "string",
"required": true
},
"size": {
"type": "number",
"default": 0
},
"uploadedAt": {
"type": "date",
"default": "$now"
}
},
"relations": {
"hasFile": {
"type": "hasMany",
"model": "UploadedFile",
"foreignKey": "fileId"
}
}
}
{
"name": "UploadedFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"hashId": {
"type": "string",
"required": true
},
......
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
{
"name": "PartitionedFile",
"base": "UploadedFile",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"partSize": {
"type": "number",
"default": 0
}
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
UploadedFile.json
{
"name": "UserFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"id": true,
"generated": true
},
"name": {
"type": "string",
"required": true
},
"size": {
"type": "number",
"default": 0
},
"uploadedAt": {
"type": "date",
"default": "$now"
}
},
"relations": {
"hasFile": {
"type": "hasMany",
"model": "UploadedFile",
"foreignKey": "fileId"
}
}
}
{
"name": "UploadedFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"hashId": {
"type": "string",
"required": true
},
......
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
{
"name": "PartitionedFile",
"base": "UploadedFile",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"partSize": {
"type": "number",
"default": 0
}
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
PartitionedFile.json
{
"name": "UserFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"id": true,
"generated": true
},
"name": {
"type": "string",
"required": true
},
"size": {
"type": "number",
"default": 0
},
"uploadedAt": {
"type": "date",
"default": "$now"
}
},
"relations": {
"hasFile": {
"type": "hasMany",
"model": "UploadedFile",
"foreignKey": "fileId"
}
}
}
{
"name": "UploadedFile",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"hashId": {
"type": "string",
"required": true
},
......
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
{
"name": "PartitionedFile",
"base": "UploadedFile",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"partSize": {
"type": "number",
"default": 0
}
},
"relations": {
"file": {
"type": "belongsTo",
"model": "UserFile",
"foreignKey": "fileId"
}
}
}
其思想是,用户文件要么有一个上传文件,要么(两个或更多)多个分区文件。
我希望能够从用户文件中,从文件的相同关系中获取,无论是上传文件还是分区文件。仅从模型的定义就可以实现这一点,还是只能通过远程方法实现这一点?从一个模型到另一个模型的关系仅绑定到一个模型;因此,不能有一个称为“文件”的关系指向不同的模型。在您的示例中,它绑定到
UploadedFile
。为了使您的模型UserFile
同时与UploadedFile
和PartitionedFile
建立关系,您需要两种不同的关系
要使您的UserFile具有一个UploadedFile或多个PartitionedFile,需要在其关系中同时具有这两个文件:
{
“名称”:“用户文件”,
...
“关系”:{
“上载的文件”:{
“type”:“hasOne”,//一个上载文件上的值为零
“模型”:“上传文件”,
“foreignKey”:“uploadedFileId”
},
“分区文件”:{
“type”:“hasMany”,//零个或多个分区文件
“模型”:“PartitionedFile”
}
}
}
然后,要通过UserFile
从UploadedFiles
和PartitionedFiles
中检索文件,您不需要遥控器,只需要在请求中包含模型
例如,在ReactJS中,它将如下所示:
const response=wait Axios.get(`/api/UserFile`{
参数:{
过滤器:{
包括:[
{关系:'uploadedFiles'},
{关系:'partitionedFiles'},
]
}
}
}
另一种解决方案是指定另一个包含所有这些关系的模型文件
(上传文件
,分区文件
,等等),以便模型用户文件
可以引用表文件
,作为检索文件的唯一关系