Ao fazer o seguinte GET:
http://localhost:3000/books/search?publisher=Editora
retorna um array vazio. Vale ressaltar que o modelo book, esta referenciando um publisher. Segue os codigos...
Modelo Book.js:
import mongoose from "mongoose";
const bookSchema = mongoose.Schema(
{
id: {type: String},
title: {type: String, require: true},
autor: {type: mongoose.Schema.Types.ObjectId, ref: 'autors', require: true},
publisher: {type: mongoose.Schema.Types.ObjectId, ref: 'publishers', require: true},
pagesNumber: {type: Number}
}
);
const books = mongoose.model('books', bookSchema);
export default books;
Segue o model Publisher.js:
import mongoose from "mongoose";
const publisherSchema = new mongoose.Schema(
{
id: {type: String},
company: {type: String, require: true},
adress: {type: String}
}
);
const publishers = mongoose.model("publishers", publisherSchema);
export default publishers;
Segue o controllerBook.js:
(...)
static bookListByPublisher = (req, res) => {
const publisher = req.query.publisher;
books.find({'publisher.company': publisher}, {}, (err, books) => {
if (err) {
res.status(400).send(`${err.message} - Couldnt list books by publisher`);
} else {
res.status(200).json(books);
}
})
}
(...)
O resto do codigo funciona bem, faco todo o CRUD e funciona, somente quando faco o metodo GET e uso bookListByPublisher
, me retorna um array vazio.
E uma duvida, quando possuo um parametro com espaco (ex: {"publisher": "Casa do codigo"}), como referencio na URL?