#node.js #foreign-keys #sequelize.js
Вопрос:
У меня есть эти две модели:
module.exports = (sequelize, Sequelize) => {
const Image = sequelize.define("Image", {
url: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
}
},
public_id: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
}
},
alt: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
},
},
not_link: {
type: Sequelize.BOOLEAN,
validate: {
notEmpty: true,
},
defaultValue: false
},
});
Image.associate = models => {
Image.belongsToMany(models.Project, {
as: 'projects',
through: "project_image"
});
Image.belongsToMany(models.Page, {
through: "page_image"
});
};
return Image;
};
module.exports = (sequelize, Sequelize) => {
const Project = sequelize.define("Project", {
title_fr: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
}
},
title_en: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
}
}
});
Project.associate = models => {
Project.belongsTo(models.Image, {
as: 'cover',
foreignKey: {
name: 'cover_img_id',
allowNull: false
}
});
Project.belongsToMany(models.Image, {
as: 'medias',
through: "project_image"
});
};
return Project;
};
Я хочу обновить проект новыми изображениями. Я перепробовал много вещей, но ничего не получилось, и я ничего не могу найти в документации.
Это моя последняя попытка:
exports.updateOneProject = (req, res) => {
const id = req.params.id;
const projectObject = {
...req.body
}
if(req.files){
let files= [];
req.files.forEach(function(file){
console.log(file)
files.push(
{
url: file.path,
alt: file.alt,
public_id:file.filename
}
)
});
projectObject.medias=files
}
Project.update(projectObject, {
where: { id: id }
})
.then(num => {
if (num == 1) {
res.send({
message: "Project was updated successfully."
});
} else {
res.send({
message: `Cannot update Partner with slug=${id}. Maybe Partner was not found or req.body is empty!`
});
}
})
.catch(err => {
res.status(500).send({
message: "Error updating Partner with slug=" id
});
});
};
And my route:
router.put('/:id', multer.array('images'), updateOneProject);
Ошибка отсутствует, все переменные определены, запрос возвращает 200, но изображения не хранятся в базе данных. Я хочу, чтобы новое изображение хранилось в базе данных, а новое отношение-в промежуточной таблице project_image. При создании проекта проблем нет, но обновление невозможно.