3
respostas

Como fazer uma consulta por autor na tabela livros

Olá, boa noite.

A professora explicou como fazer uma consulta de livro por editora, mas como fariamos isso se fossemos consultar por exemplo pelo autor ao em vez da editora:

Na parte do req.params qual seria o campo que passariamos? seria autor.id já que o autor é uma outra tabela?

3 respostas

Olá, Luiz! Tudo bem?

Para fazer uma consulta por autor na tabela de livros, você precisará utilizar o conceito de relacionamento entre tabelas no MongoDB. Supondo que você tenha uma tabela de autores e uma tabela de livros, é possível relacioná-las por meio de um campo de referência na tabela de livros.

Por exemplo, na tabela de livros, você pode ter um campo chamado "autor" que armazena o ID do autor correspondente a cada livro. Para fazer a consulta por autor, você precisará utilizar o método "populate" do Mongoose para "preencher" os dados do autor na consulta.

Aqui está um exemplo de como fazer isso:

Livro.find({}).populate('autor').exec(function(err, livros) {
  if (err) {
    console.log(err);
    return;
  }

  // Aqui você pode acessar os dados do autor de cada livro
  livros.forEach(function(livro) {
    console.log(livro.autor.nome);
  });
});

Neste exemplo, estamos fazendo uma consulta por todos os livros na tabela de livros e utilizando o método "populate" para preencher os dados do autor correspondente a cada livro. Em seguida, estamos percorrendo a lista de livros e imprimindo o nome do autor de cada livro.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa tare Emerson tudo certo?

E como faço para retornar todos os livros de um id de autor específico, por exemplo:

Quero retornar todos os livros do machado de assis

Para retornar todos os livros de um autor específico, como Machado de Assis, você pode utilizar a consulta no MongoDB utilizando o método "find" e passando o ID do autor como filtro.

Supondo que você tenha o ID do autor Machado de Assis, você pode fazer a consulta da seguinte forma:

Livro.find({ autor: "ID_DO_AUTOR_MACHADO_DE_ASSIS" }, function(err, livros) {
  if (err) {
    console.log(err);
    return;
  }

  // Aqui você pode acessar os livros do autor Machado de Assis
  console.log(livros);
});