我有两个模特,演员和电影,他们属于很多协会
const Movie = sequelize.define(
MOVIES,
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
title: {
type: DataTypes.STRING,
allowNull: false,
},
year: {
type: DataTypes.NUMBER,
allowNull: false,
},
format: {
type: DataTypes.ENUM,
values: [VHS, DVD, BLU_RAY],
allowNull: false,
},
},
{
indexes: [
{
unique: true,
fields: ['title'],
},
],
}
);
const Actor = sequelize.define(
ACTORS,
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
},
{
indexes: [
{
unique: true,
fields: ['name'],
},
],
}
);
这个逻辑
const moviesData = req.files.movies.data.toString();
const newMovies = movieHelper.formatArrayOfMovieObjects(moviesData);
const movies = await Movie.bulkCreate(newMovies, {
include: {
model: Actor,
},
updateOnDuplicate: ['title'],
});
res.json(movies).status(200);
如何使不创建新的记录,如果电影.标题存在于表中
我尝试updateOnDuplicate参数,但它给予我这个错误:[错误:SQLITE约束条件:FOREIGN KEY约束失败
1条答案
按热度按时间w6lpcovy1#
如果您的SQLite版本支持唯一约束/索引,那么您可以创建一个指示
title
字段的约束/索引,这样选项updateOnDuplicate
就可以很好地工作。