Как удалить данные из связующей таблицы в sequelize
У меня есть 2 таблицы Reader и Book. Они связаны отношением многие ко многим через таблицу ReaderBooks. В этой таблице у меня показаны какие книги выданы читателям. У читателя может быть много книг. Так вот мне надо вернуть книгу, то есть удалить из базы данных строку. Например у idReader = 1 выданы книги idBook = 1,2. Я передаю пост запрос с id книги и пользователя которые хочу удалить, и затем данные удаляются из таблицы ReaderBooks. Как это сделать? Попытался так но работает некорректно.
const Book = sequelize.define('Book', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
title: {type: DataTypes.STRING, allowNull: false},
author: {type: DataTypes.STRING, allowNull: false},
vendorCode: {type: DataTypes.INTEGER, allowNull: false},
year: {type: DataTypes.DATEONLY, allowNull: false},
numberOfCopies: {type: DataTypes.INTEGER}
});
const Reader = sequelize.define('Reader', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
fullName: {type: DataTypes.STRING, allowNull: false},
birth: {type: DataTypes.DATEONLY, allowNull: false}
});
const ReaderBook = sequelize.define('ReaderBook', {
});
Reader.belongsToMany(Book, {through: 'ReaderBook'});
Book.belongsToMany(Reader, {through: 'ReaderBook'});
module.exports = {Book, Reader, ReaderBook};
мой метод:
async returnBook(req, res) {
try {
const {idReader, idBook} = req.body;
const book = await Book.findByPk(idBook);
const reader = await Reader.findByPk(idReader);
if (!reader || !book) {
return res.status(400).json({message: 'Reader or Book does not exist'});
}
await reader.removeBook({
include: {
model: Book,
where: {
id: idBook
}
},
where: {
id: idReader
}
});
return res.json("Test");
} catch (e) {
console.log(e.message);
return res.status(400).json({message: 'Error returning a book to a reader'});
}
};