2017-04-14 61 views
0

我有这些表。患者连接到用户,userAddress连接到用户。node.js - Sequelize查询表

我想在Sequelize查询,其中,给予病人的ID,我得到了正确的userAddress信息。我可以在两个查询中完成它(首先获取userId,然后获取userAddress),但是如何仅在Sequelize中使用它呢?从我所看到的,find方法以一个表开始,我只能包含连接到那个表的表。我错过了什么吗?我将如何做到这一点?

回答

0

可以在sequelize轻松实现这一点,使用下面的查询:

Patient.findAll({ 
    where: { id: 'ABC_123' }, 
    include: { 
    model: User, 
    include: [ UserAddress ] 
    } 
}); 

然而,对于上面的查询工作,你患者用户UserAddress模型应正确关联(即,在两个方向上),像这样:

用户和患者之间:

Patient.belongsTo(models.User); 
User.hasMany(models.Patient); 

用户和UserAddress之间:

UserAddress.belongsTo(models.User); 
User.hasMany(models.UserAddress); 
+0

这样它会工作,问题是,我做我的论文有一个公司,他们有一个模式,我不能改变(他们有很多的具有相同问题的模式中的表)。这是唯一的方法吗? –

+0

说,如果你没有从用户到UserAddress(User.hasMany(models.UserAddress))的关联,那么你将无法在上面提到的查询中包含UserAddress(Sequelize将抛出一个异常,称User不与UserAddress关联)。 但是,如果你不能改变你的模型代码,你仍然可以使用原始查询来解决这个问题。查看[this](http://docs.sequelizejs.com/en/latest/docs/raw-queries/)链接 – Adhyatmik