我正在用MongoDB / Mongoose / Node.js RESTapi做一个应用程序。
我有两个模型:书籍和作者。
作者可以写很多书。只有一本书可以由作者撰写。
模型定义如下。
作者模型
var authorSchema = new Schema({
name: {type: String, required: true},
surname: {type: String, required: true},
图书模型
var bookSchema = new Schema({
isbn: {type: String, required: true},
title: {type: String, required: true},
author: {type: Schema.Types.ObjectId, ref: 'Author'},
description: {type: String}
我想做的是获取作者写的书。这是我的API端点。 IdAuthor是mongodb给出的id。
book-routes.js
可悲的是,它总是返回一堆空书。我确信它有关于“作者”属性引用作者模型的事情。localhost:3000/api/book/author/:idAuthor
router.get('/author/:idAuthor', (req, res, next) => {
let idAuthor = req.params.idAuthor;
Book.find({ author: idAuthor })
.select('isbn title author description')
.exec()
.then(bookCollection => {
const response = {
count: bookCollection.length,
books: bookCollection
}
if (response.count) {
res.status(200).json(bookCollection);
} else {
res.status(200).json({
message: 'This author does not have any book'
});
}
})
.catch(err => {
res.status(500).json({
error: err
});
});
});
我也试过这样做:
Book.find({ author: ObjectId(idAuthor) })
没有运气。
感谢您的帮助!