经过一些研究后,我没有发现任何与我的问题相关的内容。因此设置是M:M关系已经与sequelize(sqllite)一起使用:
return User.find({ where: { _id: userId } }).then(user => {
logger.info(`UserController - found user`);
Notification.find({ where: { _id: notificationId } }).then(notification => {
if (associate) {
return user.addNotification([notification]);
} else {
return user.removeNotification([notification]);
}
})
})
问题是我在inter表中有额外的字段(cityId,active),我不知道在运行“addNotification”时如何更新它。
提前致谢
答案 0 :(得分:4)
如果您使用 Sequelize版本4.x ,则API会有一些更改
关系添加/设置/创建设置器现在通过将它们作为选项传递来设置。通过(之前的第二个参数用作通过属性,现在通过作为子选项考虑其选项)
user.addNotification(notification, { through: {cityId: 1, active: true}});
答案 1 :(得分:3)
为了将数据添加到数据透视表,您应该将数据作为添加功能的第二个参数
传递user.addNotification(notification, {cityId: 1, active: true});
答案 2 :(得分:1)
当联接表具有其他属性时,可以在options对象中传递这些属性:
UserProject = sequelize.define('user_project', {
role: Sequelize.STRING
});
User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });
// through is required!
user.addProject(project, { through: { role: 'manager' }});
您可以在此处找到更多有关此的信息:https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html