LoopBack中的MySQL多对多关系

时间:2014-03-05 03:06:24

标签: mysql node.js strongloop loopbackjs

我无法让LoopBack执行多对多连接查询。考虑documentation中的hasManyThrough示例:

var Physician = ds.createModel('Physician', {name: String});
var Patient = ds.createModel('Patient', {name: String});

var Appointment = ds.createModel('Appointment', {
    physicianId: Number,
    patientId: Number,
    appointmentDate: Date
});

Appointment.belongsTo(Patient);
Appointment.belongsTo(Physician);

Physician.hasMany(Patient, {through: Appointment});
Patient.hasMany(Physician, {through: Appointment});

如果我尝试进行单一搜索以查找与邮政编码为10012的特定医生相关的患者,我可以尝试:

physician.patients({where: {zip: 10012}}, fn);

然而,对医生患者的搜索实际上只是在约会表上搜索。有没有办法直接对特定医生的患者进行简单的搜索?

1 个答案:

答案 0 :(得分:1)

LoopBack为physician.patients()实现hasMany / through关系,如下所示:

Appointment.find ({ where: { physicianId: 1 },
  include: 'patient',
  collect: 'patient' }, callback);

我们正在考虑支持“包含”的过滤器,它会带来“患者”信息。

我建议你在https://github.com/strongloop/loopback-datasource-juggler/issues打开一个问题。