附加属性使枢轴点n:m连续

时间:2019-07-17 09:43:23

标签: node.js orm sequelize.js

我的案例模型中设置了多对多关系

Case.associate = function (models) {
    Case.belongsToMany(models.ranger, {
        through: 'case_rangers',
        foreignKey: 'caseId',
        otherKey: 'rangerId',
        as: 'assignee',
        timestamps: false,
        scope: {
            status: 'ASSIGNED'
        }
    });

};

现在,我正尝试在一种情况下添加受让人,这无法在数据透视表中存储其他列 查询

Case.findByPk(2).then((caseId2) => {
    ranger.findByPk(1).then((helper) => {
        caseId2.setAssignee(helper, {eta: "1 hr" });
    })
});

就我而言,eta存储的是空值

1 个答案:

答案 0 :(得分:-1)

根据set在n:m关系中的文档,第二个参数是options,为了设置其他属性,您需要传递options.through,因此应调用:< / p>

caseId2.setAssignee(helper, { through: { eta: "1 hr" } });

文档:http://docs.sequelizejs.com/class/lib/associations/belongs-to-many.js~BelongsToMany.html#instance-method-set

编辑: 为了添加新的assigneecaseId2,您应该使用具有附加属性的addAssignee方法:

caseId2.addAssignee(helper, { through: { eta: '1 hr' } });

这将在caseId2helper之间创建新的关联,以及由through参数指定的其他关系数据。