loopbackjs - loopback hasMany 通过给出空数组
问题描述
我有以下定义的模型:
学院
{
"name": "academy",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"required": true
},
"name": {
"type": "string",
"required": true
},
"created": {
"type": "date"
},
"updated": {
"type": "date"
},
"academy_version_id": {
"type": "number",
"required": true
},
"description": {
"type": "string"
}
},
"validations": [],
"relations": {
"versions": {
"type": "hasMany",
"model": "academy_version",
"foreignKey": "academy_id",
"through": "academy_has_versions"
}
},
"acls": [],
"methods": {}
}
学院版
{
"name": "academy_version",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"required": true
},
"name": {
"type": "string",
"required": true
},
"created": {
"type": "date"
},
"updated": {
"type": "date"
}
},
"validations": [],
"relations": {
"academies": {
"type": "hasMany",
"model": "academy",
"foreignKey": "academy_version_id",
"through": "academy_has_versions"
}
},
"acls": [],
"methods": {}
}
academy_has_versions
{
"name": "academy_has_versions",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"id": {
"type": "number",
"required": true
},
"academy_id": {
"type": "number",
"required": true
},
"academy_version_id": {
"type": "number"
}
},
"validations": [],
"relations": {
"academy": {
"type": "belongsTo",
"model": "academy",
"foreignKey": "academy_id"
},
"academy_version": {
"type": "belongsTo",
"model": "academy_version",
"foreignKey": "academy_version_id"
}
},
"acls": [],
"methods": {}
}
现在你可以看到我的academy
模型hasMany
通过了academy_has_versions
当我尝试请求这个时,我得到以下结果:
如您所见,我得到一个空数组(版本)
这是不正确的,因为我的数据库如下所示:
academy_has_versions
学院版
那么谁能告诉我我做错了什么?
解决方案
我找不到错误,但我建议你试试这个:
- 从所有模型中删除“id”属性,因为 idInjection 设置为 true。
- 移除外键对应的属性。
- 从学院模型中删除 academy_version_id 属性,因为在关系中没有意义。
学院
{
"name": "academy",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"created": {
"type": "date"
},
"updated": {
"type": "date"
},
"description": {
"type": "string"
}
},
"validations": [],
"relations": {
"versions": {
"type": "hasMany",
"model": "academy_version",
"foreignKey": "academy_id",
"through": "academy_has_versions"
}
},
"acls": [],
"methods": {}
}
学院版
{
"name": "academy_version",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"created": {
"type": "date"
},
"updated": {
"type": "date"
}
},
"validations": [],
"relations": {
"academies": {
"type": "hasMany",
"model": "academy",
"foreignKey": "academy_version_id",
"through": "academy_has_versions"
}
},
"acls": [],
"methods": {}
}
academy_has_versions
{
"name": "academy_has_versions",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {},
"validations": [],
"relations": {
"academy": {
"type": "belongsTo",
"model": "academy",
"foreignKey": "academy_id"
},
"academy_version": {
"type": "belongsTo",
"model": "academy_version",
"foreignKey": "academy_version_id"
}
},
"acls": [],
"methods": {}
}
推荐阅读
- python - Python中的秒表函数
- c# - 在 C# 中第二次出现逗号时拆分字符串
- javascript - 如何为下一次渲染剩余的char jquery javascript触发焦点键
- angular - Typescript 将静态元数据添加到类并在运行时读取
- excel - 如何在输入字符之前在下面的单元格中添加('),以便excel不会将第一个字符(“@”)作为公式读取
- asp.net - IIS - 请求阻止规则
- laravel - Laravel 8 目标类不存在。[App\Http\Controllers\registerController]
- java - 如何使用计算时间差
H 格式化 Java Netbeans - jenkins - Jenkins API - 过滤最后一次构建的触发方式和时间
- tkinter - Python tkinter 在做某事成功后进入新的页面框架应用程序崩溃了