我尝试从另一个表中缺少的Postgres表中检索数据,但收到了SequelizeLoadingError。
我试图检索一个没有被特定用户租用的书籍列表。
图书控制器
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));
},图书模型
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;
};租用图书模型
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;
};我将感谢任何帮助我去取书表中的书籍,但以前还没有被用户租用过。
发布于 2017-11-22 20:28:53
通过查询图书数据库,获取与当前登录的用户名不相同的租来的图书列表,解决了这一问题。
https://stackoverflow.com/questions/46173485
复制相似问题