Loopback4 HasManyThrough关联如何实现嵌套包含访问关联模型数据
问题结论
LoopBack 4 的 hasManyThrough 关联完全支持嵌套包含查询,你遇到的问题是关联配置不全导致的。
问题原因&排查点
你之前能通过include: [{relation: 'patients'}]拿到数据,是因为你已经配置了Doctor到Patient的hasManyThrough直达关联,但要实现查询预约+关联患者的需求,你需要补全另外两个关联配置:
- Doctor模型需要额外配置
hasMany指向中间表Appointment,否则接口无法识别appointments这个关联名称 - 中间表Appointment模型需要配置
belongsTo指向Patient模型,否则Appointment的查询scope无法识别patient这个关联名称
配置示例
Doctor 模型关联定义
// 新增:Doctor到中间表Appointment的直接关联 @hasMany(() => Appointment) appointments: Appointment[]; // 原有:Doctor到Patient的hasManyThrough关联 @hasMany(() => Patient, {through: () => Appointment}) patients: Patient[];
Appointment 中间表关联定义
@belongsTo(() => Doctor) doctorId: number; // 新增:Appointment到Patient的归属关联 @belongsTo(() => Patient) patientId: number;
验证
配置完成后,你原先写的过滤器可以直接正常使用:
const filter = { include: [ { relation: 'appointments', scope: { include: [{relation: 'patient'}], }, }, ] };
内容的提问来源于stack exchange,提问作者xfscrypt
相关产品推荐
相关产品推荐

