在查询父模型时是否可以始终获取关联模型(关系(?
例如:
Foo.init {
name: DataTypes.STRING,
bar_id: DataTypes.INTEGER
}...
Bar.init {
name: DataTypes.INTEGER
}...
Bar.hasOne(Foo, {
as: 'coolname',
foreignKey: 'bar_id'
})
当我做Bar.findAll()
时,有可能总是在酒吧里放foo吗?不包含
因为Bar也是Zoo
(Zoo有很多Bar(的孩子,当我这样做时:
Zoo.findByPk(1, {
include: Bar
// somehow I need to include Foo in all Bars
})
我需要带着所有的酒吧去动物园,每个酒吧都应该有Foo。
我发现了Nested-Eager Loading,但感兴趣的是,也许在模型定义内部有一种方法?
就像python的SqlAlchemy一样:有一种方法可以始终连接关系,而无需额外查询
defaultScope of Model就可以做到这一点。
我刚刚添加了:
defaultScope: {
include: 'foocoolname'
}
其中我定义了我的模型的选项(部分,当我们给出sequialize实例、表名等时(,现在每个Bar都有it字段,在查询时没有附加条件。
这不仅仅是范围的力量,我们可以用它做很多有趣的事情。Sequelize是一个非常强大的工具。
有关作用域的更多信息,请点击此处-https://sequelize.org/v7/manual/scopes.html