【发布时间】:2020-05-07 22:17:56
【问题描述】:
如何让 Sequelize 将连接表的外键视为复合主键?我认为这是默认完成的,但是当我尝试保存我的UserMenuItem 实例(这是User 和MenuItem 之间的连接表)时,得到了这个错误:Error: You attempted to save an instance with no primary key, this is not allowed since it would result in a global update。
我的关联定义如下:
models.User.hasMany(models.UserMenuItem, { foreignKey: 'userID', onDelete: 'CASCADE' });
models.UserMenuItem.belongsTo(models.User, { foreignKey: 'userID', onDelete: 'CASCADE' });
models.MenuItem.hasMany(models.UserMenuItem, { foreignKey: 'menuItemID', onDelete: 'CASCADE' });
models.UserMenuItem.belongsTo(models.MenuItem, { foreignKey: 'menuItemID', onDelete: 'CASCADE' });
models.MenuItem.belongsToMany(models.User, { through: models.UserMenuItem, foreignKey: 'menuItemID', onDelete: 'CASCADE' }); // I tried adding "otherKey: 'userID'" as well
models.User.belongsToMany(models.MenuItem, { through: models.UserMenuItem, foreignKey: 'userID', onDelete: 'CASCADE' }); I tried adding "otherKey: 'menuItemID'" as well
我不包括模型定义,因为我认为它们不相关。 User 和 MenuItem 有一个名为 ID 的 PK,并且连接表有一些额外的数据字段,但 FK 除外。
是否有可能,还是我必须在连接表中添加不必要的 PK?
【问题讨论】:
标签: sequelize.js