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 不做吗?