Sequelize.js Sequelize-通过表销毁具有多对多关系的记录
我有一个场景,我试图从一个具有多对多关系的表中删除一条记录,以及连接两个表的连接(通过)表中匹配的recordId。我知道有Sequelize.js Sequelize-通过表销毁具有多对多关系的记录,sequelize.js,Sequelize.js,我有一个场景,我试图从一个具有多对多关系的表中删除一条记录,以及连接两个表的连接(通过)表中匹配的recordId。我知道有set和get方法可以为一个表创建记录,然后通过表在中自动创建关系,但是有没有方法可以删除 以下是关系: 用户 User.belongsToMany(db.Organization, { through: 'organization_member', foreignKey: 'user_id'}) 组织机构 Organization.belongsToMany(db.Us
set
和get
方法可以为一个表创建记录,然后通过表在中自动创建关系,但是有没有方法可以删除
以下是关系:
用户
User.belongsToMany(db.Organization, { through: 'organization_member', foreignKey: 'user_id'})
组织机构
Organization.belongsToMany(db.User, { through: 'organization_member', foreignKey: 'organization_id'})
请注意,Sequelize将两个foreignKey别名为camel case,这就是错误消息与关联中提到的列不同的原因
我试图在user
表上使用destroy命令,其中任何用户都与当前用户会话关联的组织关联。不幸的是,以下命令不起作用,因为用户
表中不存在organization\u id
,而组织成员
连接表中不存在。有人能帮忙吗
deleteUsers: function(organizationId, t){
console.log("Step 10: Delete Users");
//DELETE users
return models.User.destroy({
where: {
organizationId: organizationId
}
},{ transaction: t })
}
错误:
{ [SequelizeDatabaseError: column "organizationId" does not exist]
你有两个问题
1) 您正试图按组织id删除用户,但您的用户没有organization\u id
列,而organization\u member
表中有该列。您是要删除用户和组织的关联,还是要删除该用户
2) 您正在为列名进行续集。我认为最好的办法是将Sequelize配置为只对所有外键使用下划线或驼峰大小写。这样你就不必担心总是过度统治
这是我的配置:
const db = module.exports = new Sequelize(url, {
dialect: 'postgres',
define: {
underscored: true, // use snake_case rather than camelCase column names
freezeTableName: true, // don't change table names from the one specified
timestamps: true, // automatically include timestamp columns
}
});
谢谢你的回答。1) 两者都有。我正在尝试删除关联,然后这些用户将成为已删除关联的一部分。此方法是从我的应用程序中删除帐户的更大操作链的一部分。2) 好电话。