我有三个模型国家,城市和办公室
它们是相互联系的。办公室属于城市,城市属于国家。现在我要做的是在特定国家设立办事处。我在下面试过,但不起作用。
Office.findAll({
where: {'$Country.id$': 1},
include: [
{
model: City,
as: 'city',
include: [{model: Country, as: 'country'}]
}
]
});
国家
module.exports = (sequelize, DataTypes) => {
let Country = sequelize.define('Country', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
code: {type: DataTypes.STRING, allowNull: false, unique: true },
name: DataTypes.STRING
});
Country.associate = (models) => {
Country.hasMany(models.City, {as: 'cities'});
};
return Country;
}
城市
module.exports = (sequelize, DataTypes) => {
let City = sequelize.define('City', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
name: {type: DataTypes.STRING, allowNull: false, unique: true},
});
City.associate = (models) => {
City.belongsTo(models.Country, {as: 'country'});
City.hasMany(models.Office, {as: 'offices'});
};
return City;
}
办公室
module.exports = (sequelize, DataTypes) => {
let Office= sequelize.define('Office', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
name: DataTypes.STRING,
details: DataTypes.TEXT,
latitude: DataTypes.DECIMAL(10, 8),
longitude: DataTypes.DECIMAL(11, 8),
});
Office.associate = (models) => {
Office.belongsTo(models.City, {as: 'city'});
};
return Office;
};
2条答案
按热度按时间2hh7jdfx1#
可以像这样包含所有相关的嵌套模型
它会导致
p4rjhz4m2#
您可以从include直接从country查询,并使用
required : true
,请尝试以下操作: