ame*_*iel 3 node.js loopbackjs
我有一个User实体和一个Hobbie实体,都在Loopback中定义了它们的模型,我在API资源管理器中看到它们.
我有一个表UserHobbie链接User和Hobbie在ManyToMany关系.我正在尝试声明一个loopback hasManyThrough关系,例如
User.hasMany(Hobbie, {through: UserHobbie});
Run Code Online (Sandbox Code Playgroud)
但我似乎无法做得好,因为它没有出现在资源管理器中.我已经/server/server.js在bootstrapping部分之后立即声明了它,并且我已经尝试过/common/User.js并且/common/Hobbie.js(但是在其中任何一个中,其他模型都不可见).
是否有正确的语法在User.json或Hobbie.json中添加它?这将是我的首选方式,因为我在json定义中的任何内容都显示在资源管理器中.
小智 9
要解决Model JSON中的问题,我将在下面概述解决方案.但是,使用"hasAndBelongsToMany"关系可以更简单地解决您的问题,我也将在下面概述.
在你的User.json中:
"relations": {
"Hobbies": {
"type": "hasMany",
"model": "Hobbie",
"through": "UserHobbie",
"foreignKey": "hobbieId"
}
}
Run Code Online (Sandbox Code Playgroud)
在你的Hobbie.json中:
"relations": {
"Users": {
"type": "hasMany",
"model": "User",
"through": "UserHobbie",
"foreignKey": "userId"
}
}
Run Code Online (Sandbox Code Playgroud)
您的UserHobbie.json看起来像这样(请注意,您不要在"属性"中定义userId或hobbieId:
{
"name": "UserHobbie",
"plural": "UserHobbies",
"base": "PersistedModel",
"properties": {
"id": {
"type": "String",
"id": true
}
},
"validations": [],
"relations": {
"Users": {
"type": "belongsTo",
"model": "User",
"foreignKey": "userId"
},
"Hobbies": {
"type": "belongsTo",
"model": "Hobbie",
"foreignKey": "hobbieId"
}
},
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
这个简单的方法如下:
不要明确创建UserHobbies模型.Loopback将自动为您创建一个Join Model.
在您的用户模型中:
"relations": {
"Hobbies": {
"type": "hasAndBelongsToMany",
"model": "Hobbie"
}
}
Run Code Online (Sandbox Code Playgroud)
在你内部Hobbie模型:
"relations": {
"Users": {
"type": "hasAndBelongsToMany",
"model": "User"
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想在代码中执行此操作,那么你是正确的,有一些Bootstrap时序问题可以防止这些关系出现在资源管理器中.我将很快添加另一个回复,向您展示如何使这项工作.
| 归档时间: |
|
| 查看次数: |
3621 次 |
| 最近记录: |