【问题标题】:Sequelize: always get association/relationSequelize:总是得到关联/关系
【发布时间】:2022-06-12 02:41:09
【问题描述】:

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

例如:

    Foo.init {
      name: DataTypes.STRING,
      bar_id: DataTypes.INTEGER
    }...

    Bar.init {
       name: DataTypes.INTEGER
    }...

   Bar.hasOne(Foo, {
      as: 'coolname',
      foreignKey: 'bar_id'
   })

当我执行Bar.findAll() 时,是否可以始终在 Bar 中获取 foo?没有“包含”

因为 Bar 也是 Zoo 的孩子(动物园有很多 Bar),当我这样做时:

Zoo.findByPk(1, {
  include: Bar
  // somehow I need to include Foo in all Bars
})

我需要获得 Zoo 及其所有的 Bars,并且每个 Bar 都应该拥有它 Foo。

我发现了 Nested Eager Loading,但有兴趣也许在模型定义中有一种方法?

就像在 python 的 SqlAlchemy 中一样:有一种方法可以在不进行额外查询的情况下始终加入关系

【问题讨论】:

标签: sequelize.js


【解决方案1】:

模型的默认作用域可以解决问题。

我刚刚添加了:

  defaultScope: {
    include: 'foocoolname'
  }

我在哪里定义我的模型的选项(部分,当我们提供 sequalize 实例、表名等时),现在每个 Bar 都有它字段,在查询时没有附加条件。

它不仅是范围的力量,我们还可以用它做很多有趣的事情。 Sequelize 是非常强大的工具。

关于范围的更多信息在这里 - https://sequelize.org/v7/manual/scopes.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2021-04-16
    • 2021-11-05
    • 2017-03-30
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多