序列化-排除父作用域中的默认子关系

时间:2019-07-04 11:11:45

标签: orm sequelize.js

我有以下三种关系的Sequelize模型:

ParentModel -> ChildModel -> ExpensiveRelationshipModel

默认范围ChildModel包括ExpensiveRelationshipModel,并且我正在为ParentModel创建一个新范围,它不需要这种昂贵的关系中的数据,因此我想删除它。

ChildModel的默认范围:

ChildModel.addScope(
  'defaultScope',
  {
    include: [
      { model: db.ExpensiveRelationshipModel, as: 'expensiveRelationship' }
    ]
  }
)

我正在为ParentModel写一个新的作用域,我希望它包括ChildModel,但排除ExpensiveRelationshipModel。我为ParentModel撰写的范围是:

ParentModel.addScope(
  'for-recently-viewed',
  {
    include: [
      {
        model: ChildModel,
        as: 'child'
      }
    ]
  }
)

这将导致使用ChildModel的默认范围,因此包含了我不需要的ExpensiveRelationshipModel

我想在此范围内指定以消除ChildModelExpensiveRelationshipModel之间的昂贵关系。如何在Sequelize 4中做到这一点?

1 个答案:

答案 0 :(得分:1)

如果使用Model.scope('smaller-scope'),则不会使用默认范围。