J'ai essayé d'extraire des données d'une table Postgres SQL manquante dans une autre table mais j'ai reçu SequelizeLoadingError
. J'essaie de récupérer une liste de livres qui n'ont pas été loués par un utilisateur particulier.Récupération des données de la table postgresql manquante dans une autre table à l'aide de Sequelize
livre Contrôleur
getBooks(req, res) {
const userId = req.params.userId;
return Book
.findAll({
where: Sequelize.literal('RentedBook.userId IS null'),
include: [
{ model: RentedBook }
]
})
.then((books) => {
if (books.length < 1) {
res.status(400).send({
message: 'There is no book in the database'
});
} else {
res.status(201).send(books);
}
})
.catch(error => res.status(404).send(error));
},
livre Modèle
export default (sequelize, DataTypes) => {
const Books = sequelize.define('Book', {
title: {
type: DataTypes.STRING,
allowNull: DataTypes.FALSE,
},
isbn: {
type: DataTypes.TEXT,
required: true,
},
total: {
type: DataTypes.INTEGER,
required: true
},
prodYear: DataTypes.STRING,
catId: DataTypes.INTEGER,
cover: DataTypes.STRING,
author: DataTypes.STRING,
description: DataTypes.TEXT
}, {
classMethods: {
associate: (models) => {
// associations can be defined here
Books.hasMany(models.RentedBook, {
foreignKey: 'bookId'
});
Books.hasOne(models.Category, {
foreignKey: 'catId',
onDelete: 'CASCADE'
});
}
}
});
return Books;
};
Modèle livre loué
export default (sequelize, DataTypes) => {
const RentedBook = sequelize.define('RentedBook', {
bookId: DataTypes.INTEGER,
userId: DataTypes.INTEGER,
toReturnDate: DataTypes.DATE,
returnDate: DataTypes.DATE,
returned: {
type: DataTypes.BOOLEAN,
defaultValue: false
}
}, {
classMethods: {
associate: (models) => {
// associations can be defined here
RentedBook.BelongsTo(models.Book, {
foreignKey: 'bookId',
onDelete: 'CASCADE'
});
RentedBook.BelongsTo(models.User, {
foreignKey: 'userId',
onDelete: 'CASCADE'
});
}
}
});
return RentedBook;
};
Je vais un Je vous demande de m'aider à chercher des livres qui existent dans la table du livre mais qui n'ont pas été loués auparavant par l'utilisateur.