续集:总是得到 association/relation
Sequelize: always get association/relation
是否可以在查询父模型时始终获取关联模型(关系)?
例如:
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 中?没有 'include'
因为 Bar 也是 Zoo
的子项(Zoo 有很多 Bar),当我这样做时:
Zoo.findByPk(1, {
include: Bar
// somehow I need to include Foo in all Bars
})
我需要获得 Zoo 及其所有 Bars,每个 Bars 都应该有 Foo。
我发现了 Nested Eager Loading,但感兴趣的是模型定义中是否有一种方法?
就像在 python 的 sqlalchemy 中一样:有一种方法可以始终连接关系而无需额外查询
模型的 defaultScope 可以解决问题。
我刚加
defaultScope: {
include: 'foocoolname'
}
我在其中定义我的模型的选项(部分,当我们给出 sequalize 实例、表名等时),现在每个 Bar 都有它的字段,在查询时没有附加条件。
它不仅是范围的力量,我们还可以用它做很多有趣的事情。 Sequelize 是一个非常强大的工具。
有关作用域的更多信息,请参见此处 - https://sequelize.org/v7/manual/scopes.html
是否可以在查询父模型时始终获取关联模型(关系)?
例如:
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 中?没有 'include'
因为 Bar 也是 Zoo
的子项(Zoo 有很多 Bar),当我这样做时:
Zoo.findByPk(1, {
include: Bar
// somehow I need to include Foo in all Bars
})
我需要获得 Zoo 及其所有 Bars,每个 Bars 都应该有 Foo。
我发现了 Nested Eager Loading,但感兴趣的是模型定义中是否有一种方法?
就像在 python 的 sqlalchemy 中一样:有一种方法可以始终连接关系而无需额外查询
模型的 defaultScope 可以解决问题。
我刚加
defaultScope: {
include: 'foocoolname'
}
我在其中定义我的模型的选项(部分,当我们给出 sequalize 实例、表名等时),现在每个 Bar 都有它的字段,在查询时没有附加条件。
它不仅是范围的力量,我们还可以用它做很多有趣的事情。 Sequelize 是一个非常强大的工具。
有关作用域的更多信息,请参见此处 - https://sequelize.org/v7/manual/scopes.html