将修饰符与 Objection.js 关系映射一起使用

Using modifier with Objection.js relationmapping

我有四个tablevehicle_parts,part_pricing,labour_pricingpaint_pricing。 Vehicle_parts table 与剩余的 table 具有一对多关系。每个 table 都有一个字段 is_active 指示记录是否处于活动状态。因此,理想情况下,vehicle_parts table 中的每个部分在 part_pricing 中只有一个有效价格。

我正在使用 Objection.js 构建我的模型,如下所示 -

我有一个功能,我正在查询车辆零件模型以获取车辆零件以及相关价格,如下所示 -

我正在使用 withGraphFetched() 方法获取关系数据,我正在获取它。

我面临的问题是,当我获取车辆零件时,我只获取活动零件,但是我得到非活动价格以及相关数据中的活动价格。 我知道这可以使用修饰符来解决,但我不确定如何使用它。简而言之,我需要在使用 withGraphFetched().

获取数据时检查每个关系中的 is_Active 标志

感谢分享您的智慧。

您应该在建立关系时在模型中应用过滤器。

喜欢, 例如,

part_pricing: {
    relation: BaseModel.HasManyRelation,
    modelClass: path.join(__dirname, '/PartPricing'),
    filter: (builder) => builder.where('is_active', true),
    join: {
        from: 'vehicle_parts.id',
        to: 'part_pricing.vehicle_part_id',
    },
}