我有两个模型users
和appointments
。
users
模型如下所示 -
{
"users": {
"0": {
"id": "1",
"name": "test1",
"role": "doctor"
},
"1": {
"id": "2",
"name": "test2",
"role": "patient"
},
"2": {
"id": "3",
"name": "test3",
"role": "support"
}
}
}
现在在上面的模型中,如果角色是医生,我们将其称为doctor_id
,如果是patient
,则patient_id
等等。
现在我的预约模式低于>
{
"name": "appointments",
"plural": "appointments",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"appointmentDate": {
"type": "date"
},
"appointmentTime": {
"type": "string"
},
"doctorId": {
"type": "string"
},
"patientId": {
"type": "string"
}
},
"validations": [],
"relations": {
"Doctor": {
"type": "belongsTo",
"model": "users",
"foreignKey": "doctorId"
},
"Patient": {
"type": "belongsTo",
"model": "users",
"foreignKey": "patientId"
}
},
"acls": [],
"methods": {}
}
因此,当我尝试GET
所有约会时,它不会从users
发送关系数据。如果我添加单个关系,它按预期工作,但不能处理来自同一模型的多个关系。
提前致谢,
答案 0 :(得分:0)
包括我之前的评论以提供背景信息:
我这样做的方式,我相信外键应该是“”两者。你不应该定义doctorId和patientId,你可能必须在用户类中用外键“Doctor”和“Patient”定义两个hasMany关系
这里举一个例子是我的用户类(称为客户)
中定义的关系"commentsWritten": {
"type": "hasMany",
"model": "comment",
"foreignKey": "sourceCustomerId"
},
"commentsReceived": {
"type": "hasMany",
"model": "comment",
"foreignKey": "targetCustomerId"
},
然后在我的评论定义中,我有以下
"properties": {
...
"targetCustomerId": {
"type": {
"required": true
}
},
"sourceCustomerId": {
"type": {
"required": true
}
}
},
"relations": {
"targetCustomer": {
"type": "belongsTo",
"model": "customer",
"foreignKey": ""
},
"sourceCustomer": {
"type": "belongsTo",
"model": "customer",
"foreignKey": ""
}
},
请注意,我确实定义了属性(ids),但是,如果我没记错的话,只有这样才能强迫它们不为空,即你不应该需要它。
答案 1 :(得分:0)
如果您go to the belongsTo documentation可以看到foreignKey
字段为空,那么您需要将其从关系定义中删除。
您可能还想定义关系的另一面。
即。 define a hasMany relation users hasMany appointments
:
{
"name": "users",
"base": "PersistedModel",
...
"relations": {
"doctors": {
"type": "hasMany",
"model": "appointments",
"foreignKey": "doctorId"
},
"patients": {
"type": "hasMany",
"model": "appointments",
"foreignKey": "patientId"
},
...
}
然而,可能不支持您尝试做的事情(实际上我甚至不确定它是否对LoopBack有意义)。
你可以check the documentation on polymorphic relations,即使这是一项正在进行的工作,也没有提及Model A hasMany Model B
同时通过多个foreignKey
。
LoopBack需要在第一个外键下搜索一些逻辑,如果没有找到任何内容,则在另一个外键下搜索,我不确定是否支持这种复杂的组合。
为什么不定义两个模型,一个用于医生,一个用于患者,而是有两种不同的关系?你甚至可以go to the documentation on HasManyThrough relations,你可以看到一个模拟与你想要的东西非常相似的例子。