如何处理 Sequelize 中的关系/关联?

时间:2021-01-31 04:43:45

标签: javascript node.js sequelize.js

Actors 表和 Movies 表之间的简单关系,诞生了一个新表 ActorMovies。使用我创建的迁移:

up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('actor_movies', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      movie_id: {
        type: Sequelize.INTEGER
      },
      actor_id: {
        type: Sequelize.INTEGER
      },
      created_at: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updated_at: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });

在 ActorMovies 模型中,

const { Model, DataTypes } = require('sequelize');

class ActorMovie extends Model {
  static init(sequelize) {
    super.init(
      {
        movie_id: DataTypes.INTEGER,
        actor_id: DataTypes.INTEGER
      },
      {
        sequelize
      });
  }
}

module.exports = ActorMovie;

就在演员和电影模型中,我指出了这种关系:

const { Model, DataTypes } = require('sequelize');

class Movies extends Model {
  static init(sequelize) {
    super.init( {...} {sequelize});
  }

  static associate(models) {
    this.belongsToMany(models.Actor, { through: models.ActorMovie });
    this.belongsToMany(models.User, { through: models.Ratings });
  }
}

module.exports = Movies;

const { Model, DataTypes } = require('sequelize');

class Actor extends Model {
  static init(sequelize) {
    super.init({..}, {sequelize})
  }

  static associate(models) {
  this.belongsToMany(models.Movie, { through: models.ActorMovie });
}

}

module.exports = Actor;

这是我第一次使用 Sequelize,我不知道它是否正确。现在来我的“怀疑”, 如果电影也有 ID 和演员,我需要处理吗?像这样:

const { movie_id, actor_id } = req.body; const actormovie = ActorMovies.create({ movie_id, actor_id });

好的,保存例如movie_id:1和actor_id:1,但它们都没有退出!这个搬运我要做什么? Sequelize 不做吗?

0 个答案:

没有答案
相关问题