答案 0 :(得分:0)
在两个模型之间声明many-to-many
关系时,一种方法是创建另一个表(模型),将两个相关模型的主键存储为单个记录。此方法从公共(through
)模型添加额外提取以标识模型记录之间的关系。但它肯定会阻止数据冗余。
在loopback中有两种实现many-to-many
关系的方法。如果我们希望明确声明干预模型,则使用hasMany
与through
模型的关系,这是将两个相关模型的id存储为单个模型的模型记录。如果我们不想要任何明确的干预模型,那么我们使用hasAndBelongsToMany
关系。
要使用hasManyThrough
关系定义关系,请在模型的定义中使用类似于hasMany的以下格式,但使用through
模型的其他声明。
: -
"relations": {
"relation1": {
"type": "hasMany",
"model": "modelName2",
"through": "interveningModelName"
},
: -
"relations": {
"relation2": {
"type": "hasMany",
"model": "modelName1",
"through": "interveningModelName"
},
为了通过REST api使用hasAndBelongsToMany
关系,我们必须声明一个介入模型,否则我们不能使用REST端点来使用这种多对多关系。
如果没有声明干预模型,我们必须使用标准的perssistedModel方法(如create
)来添加两个模型之间关系的实例。
关于hasAndBelongsToMany
关系的澄清:https://github.com/strongloop/loopback/issues/1960