附加属性 sequelize pivot n:m
Posted
技术标签:
【中文标题】附加属性 sequelize pivot n:m【英文标题】:Additional Attributes sequelize pivot n:m 【发布时间】:2019-07-17 09:43:23 【问题描述】:我的案例模型中设置了多对多关系
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 存储的是 null
【问题讨论】:
【参考方案1】:根据set
在n:m关系中的文档,第二个参数是options
,为了设置额外的属性你需要传递options.through
所以你应该调用:
caseId2.setAssignee(helper, through: eta: "1 hr" );
.
文档:http://docs.sequelizejs.com/class/lib/associations/belongs-to-many.js~BelongsToMany.html#instance-method-set
编辑:
要添加新的assignee
和caseId2
,您应该使用带有附加属性的addAssignee
方法:
caseId2.addAssignee(helper, through: eta: '1 hr' );
这应该在caseId2
和helper
之间创建新的关联以及through
参数指定的附加关系数据。
【讨论】:
set 用于更新之前存储的受理人。根据您的查询,它会将 eta 设置为该案件所有受让人的 1 小时。 @RanjanAdhikari 来自 set 的文档:“通过传递实例数组或其主键来设置关联模型。不在传递数组中的所有内容都将取消关联。”。如果您想更新关系数据,或者在否决答案之前更好地形成您的问题,您应该执行不同的操作。以上是关于附加属性 sequelize pivot n:m的主要内容,如果未能解决你的问题,请参考以下文章
关联(pivot,belongsToMany)中的续集挂钩(afterCreate.afterUpdate)不起作用