Node.js 附加属性:n:m

Node.js 附加属性:n:m,node.js,orm,sequelize.js,Node.js,Orm,Sequelize.js,在我的案例模型中,我有多对多关系集 Case.associate = function (models) { Case.belongsToMany(models.ranger, { through: 'case_rangers', foreignKey: 'caseId', otherKey: 'rangerId', as: 'assignee', timestamps: false, sco

在我的案例模型中,我有多对多关系集

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

};
现在,我试图在一个案例中添加一个受让人,该案例无法在透视表中存储额外的列 质疑


在我的例子中,eta存储空值

根据n:m关系中的
set
文档,第二个参数是
options
,为了设置附加属性,需要传递
options。通过
调用:

caseId2.setAssignee(helper,{通过:{eta:'1hr}})

文件:

编辑: 要添加新的
受让人
案例ID2
,您应使用带有附加属性的
添加受让人
方法:

caseId2.addAssignee(helper,{通过:{eta:'1hr'}})


这将在
caseId2
helper
之间创建新的关联,以及通过
参数指定的其他关系数据

set用于更新以前存储的受让人。通过您的查询,它会将eta设置为该案例所有受让人的1小时。@RanjanAdhikari来自set文档:“通过传递实例数组或其主键来设置关联模型。传递数组中不包含的所有内容都将取消关联。”。如果要更新关系数据,或在对答案进行向下投票之前更好地形成问题,则应执行不同的操作。
Case.findByPk(2).then((caseId2) => {
    ranger.findByPk(1).then((helper) => {
        caseId2.setAssignee(helper, {eta: "1 hr" });
    })
});