Sequelize:belongsToMany和级联删除

时间:2017-03-11 21:22:13

标签: javascript mysql foreign-keys sequelize.js

美好的一天。我有3张桌子:

  1. 人:id,姓名
  2. 地点:id,name
  3. PeoplePlaces:id,person_id,place_id
  4. 我有这些表的模型:

    function Person(Sequelize, sequelize) {
      return sequelize.define('people', {
        id: {
          type: Sequelize.INTEGER,
          primaryKey: true,
          autoIncrement: true
        },
        firstName: {
            type: Sequelize.STRING,
            allowNull: false
        },
        lastName: {
            type: Sequelize.STRING,
            allowNull: false
        },
        birthdate: {
            type: Sequelize.DATE,
            allowNull: false
        }
      }, {
          timestamps: false
      });
    }
    
    function Place(Sequelize, sequelize) {
      return sequelize.define('places', {
        id: {
          type: Sequelize.INTEGER,
          primaryKey: true,
          autoIncrement: true
        },
        name: {
            type: Sequelize.STRING,
            allowNull: false
        }
      }, {
          timestamps: false
      });
    }
    
    function PersonPlace(Sequelize, sequelize) {
      return sequelize.define('peopleplaces', {
        id: {
          type: Sequelize.INTEGER,
          primaryKey: true,
          autoIncrement: true
        }
      }, {
          timestamps: false
      });
    }
    

    所以,例如我想删除id = 1的人:

    sequelize.people.destroy({ where: { personId: pId } })
    

    但我在删除时遇到错误,对我说表PersonPlaces包含FK到Person并且无法删除。

    我尝试使用onDelete: 'cascade'People.belongsToMany(Places, { through: PeoplePlaces, onDelete: 'cascade' });

    但没有好结果。

    那么,我如何从People删除PeoplePlaces中有FK的人?

0 个答案:

没有答案