使用额外的列可以对许多人进行定制

时间:2016-09-09 10:10:45

标签: node.js sequelize.js

经过一些研究后,我没有发现任何与我的问题相关的内容。因此设置是M:M关系已经与sequ​​elize(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”时如何更新它。

提前致谢

3 个答案:

答案 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