续集:总是得到 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