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" });
})
});