我是续集的新手,遇到了一个我没有找到任何文档的问题。
我的代码中有三个表/模型:
module.exports = (sequelize, DataTypes) => {
const country= sequelize.define(
'country',
{ name: DataTypes.STRING }
}
);
country.associate = function(models) {
country.hasMany(models.city, { foreignKey: 'countryId' });
};
return country;
};
module.exports = (sequelize, DataTypes) => {
const city = sequelize.define(
'city',
{
countryId: DataTypes.INTEGER,
name: DataTypes.STRING,
}
}
);
city.associate = function(models) {
city.belongsTo(models.country, { as: 'country' });
city.hasMany(models.venue, { foreignKey: 'cityId' });
};
return city;
};
module.exports = (sequelize, DataTypes) => {
const venue= sequelize.define(
'venue',
{
cityId: DataTypes.INTEGER,
name: DataTypes.STRING,
}
}
);
venue.associate = function(models) {
venue.belongsTo(models.city, { as: 'city' });
};
return venue;
};
国家->城市->地点。
我的问题是:是否可以查询某个国家/地区的所有场馆?
例如: 国家表:
+----+---------+--+
| id | name | |
+----+---------+--+
| 1 | Canada | |
| 2 | USA | |
| 3 | Austria | |
+----+---------+--+
城市表:
+----+---------+-----------+
| id | name | countryId |
+----+---------+-----------+
| 1 | Ottawa | 1 |
| 2 | Toronto | 1 |
| 3 | Chicago | 2 |
+----+---------+-----------+
地点表:
+----+------+--------+
| id | name | cityId |
+----+------+--------+
| 1 | V1 | 1 |
| 2 | V2 | 1 |
| 3 | V3 | 2 |
| 4 | V4 | 3 |
+----+------+--------+
我如何查询加拿大的所有场馆以获得V1 V2 V3?
答案 0 :(得分:0)
在这里,您可以按include
顺序连接表:
// To get venues from country id
venue.findAll({
include : [
{
model : city
where : {
countryId : YOUR_COUNTRY_ID
}
}
]
})
// To get venues from country name
venue.findAll({
include : [
{
model : city
include : [{
model : country
where : {
name : YOUR_COUNTRY_NAME
}
}]
}
]
})
注意:
model : YOUR_MODEL_NAME
,根据您的代码,我假设您 使用相同名称的地点,城市和国家作为模型,否则您有 根据您的代码进行更改。