2017-04-14 59 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