Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] - Como consultar com vários parâmetros

Olá,

Como ficaria o código para realizar uma consulta com vários parâmetros? Teria que criar um para cada no controller (listarLivroPorTitulo, listarLivroPorAutor, listarLivroPorPaginas) ? E depois adicionar eles no router (acima do .get("/livros:id")?

A intenção final seria poder realizar uma requisição tipo assim: http://localhost:3000/livros/busca?editora=X&nome=fulano&numeroPaginas=100&titulo=ciclano

  static listarLivroPorEditora = (req, res) => {
    const editora = req.query.editora

    livros.find({'editora': editora}, {}, (err, livros) => {
      res.status(200).send(livros);

    })
  }
1 resposta
solução!

Se você deseja realizar consultas com vários parâmetros, você pode criar uma única rota e um único handler/controller para lidar com a busca. No seu caso, você pode fazer algo assim:

// Rota para buscar livros com base em vários parâmetros
router.get("/livros/busca", LivroController.buscarLivros);

// Controller para buscar livros com base em vários parâmetros
class LivroController {
  static buscarLivros(req, res) {
    const { editora, nome, numeroPaginas, titulo } = req.query;

    // Construir um objeto de filtro com base nos parâmetros recebidos
    const filtro = {};
    if (editora) filtro.editora = editora;
    if (nome) filtro.nome = nome;
    if (numeroPaginas) filtro.numeroPaginas = numeroPaginas;
    if (titulo) filtro.titulo = titulo;

    // Executar a consulta usando o filtro construído
    livros.find(filtro, {}, (err, livros) => {
      if (err) {
        res.status(500).send("Erro ao buscar livros.");
      } else {
        res.status(200).send(livros);
      }
    });
  }
}