Sequelize.js Sequelize-通过表销毁具有多对多关系的记录

Sequelize.js Sequelize-通过表销毁具有多对多关系的记录,sequelize.js,Sequelize.js,我有一个场景,我试图从一个具有多对多关系的表中删除一条记录,以及连接两个表的连接(通过)表中匹配的recordId。我知道有set和get方法可以为一个表创建记录,然后通过表在中自动创建关系,但是有没有方法可以删除 以下是关系: 用户 User.belongsToMany(db.Organization, { through: 'organization_member', foreignKey: 'user_id'}) 组织机构 Organization.belongsToMany(db.Us

我有一个场景,我试图从一个具有多对多关系的表中删除一条记录,以及连接两个表的连接(通过)表中匹配的recordId。我知道有
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) 好电话。