Sequelize.js 一对多关联
/usr/lib/gcc/x86_64-linux-gnu/4.9/
[国家]& DB中的[City],就像那样:
var City = sequelize.define('city', { countryCode: Sequelize.STRING });
var Country = sequelize.define('country', { isoCode: Sequelize.STRING });
// Here we can connect countries and cities base on country code
Country.hasMany(City, {foreignKey: 'countryCode', sourceKey: 'isoCode'});
City.belongsTo(Country, {foreignKey: 'countryCode', targetKey: 'isoCode'});
我希望Query [Country]存在[City],带偏移&限制,使用ORM,而不是sql,就像那样:
- Country-001
* City-001-1
* City-001-2
* City-001-3
- Country-002
* City-002-1
* City-002-2
* City-002-3
- Country-003
no city
- Country-004
* City-004-1
* City-004-2
* City-004-3
...
- Country-100
* City-100-1
* City-100-2
* City-100-3
我不知道怎么做?
我试过某种方式,但效果不好。 这种方式不正确,它会返回9 [Country]而不是10,[Country-003]真的没有结果,但是限制不正确。
Country.findAll({
where: {},
include: [],
offset: 0,
limit: 10
});
答案 0 :(得分:0)
对于初学者来说,将require: true
表示如果Country
没有与之关联的任何City
个对象,那么它将不会作为查询的一部分返回。< / p>
此外,您的查询结构取决于您尝试限制的内容。
如果您想要仅返回10条Country
条记录,则每条记录都会包含任意数量的City
个对象:
Country.findAll({
include: [{
model: City,
require: true,
}],
limit: 10
});
如果您想要取回所有Country
个对象,但每个对象最多只能找到10个City
个对象:
Country.findAll({
include: [{
model: City,
require: true,
limit: 10
}],
});
如前所述,您也可以放弃required: true
来解除限制,Country
必须将任何City
个对象关联到结果中。