Sequelize:总是获得关联/关系



在查询父模型时是否可以始终获取关联模型(关系(?

例如:

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

最新更新