‫Instrutor: Então, nos
‫dois últimos vídeos, criamos um endpoint POST
‫aninhado para criar novas avaliações em um determinado tour.
‫Portanto, vamos agora construir sobre
‫isso e também criar um ponto de extremidade GET aninhado.
‫Portanto, já implementamos nossa função
‫de manipulador getAllReviews, certo?
‫Mas, no momento, tudo o que ele faz é basicamente obter
‫uma série de todas as resenhas da coleção de resenhas.
‫Agora, um caso de uso comum para sua
‫API pode ser obter uma matriz de todas
‫as avaliações de um tour
‫específico, muito semelhante ao createReview, certo?
‫Então, basicamente semelhante a esta rota aqui,
‫mas exceto com GET.
‫Então, basicamente algo assim, ok?
‫E então, tudo o que precisamos fazer para
‫implementar isso é fazer algumas
‫mudanças simples em nossa função de manipulador getAllReviews, certo?
‫Porque agora, graças aos parâmetros de
‫mesclagem, e esse tipo de redirecionamento que implementamos aqui no último
‫vídeo, então, graças a tudo isso, esta
‫função de manipulador getAllReviews agora será automaticamente chamada
‫sempre que houver uma solicitação GET
‫para um URL que
‫parece assim, e também terá acesso ao
‫tourId, e novamente, graças a mergeParams definido como true.
‫Tudo bem?
‫Então, vamos fazer algumas mudanças muito simples aqui, certo?
‫E o que vamos
‫fazer aqui é verificar se existe um tourId, e se
‫houver, bem, então vamos apenas procurar
‫avaliações em que o tour seja igual a esse tourId, certo?
‫Então, isso é
‫algo muito simples de implementar usando find, certo?
‫Então, basicamente, o que estamos fazendo é algo assim.
‫Então, se houver pedido. params. tourId, então
‫queremos criar um objeto de
‫filtro, que usaremos mais tarde aqui.
‫Vamos colocá-lo aqui imediatamente, e
‫também precisamos inicializá-lo.
‫Então, vamos filtrar, porque queremos então transformar isso, ok?
‫Portanto, se houver um tourId, esse filtro deve
‫ser igual a tour:
‫req. params. tourId.
‫Ok, e então, novamente, se houver um tourId,
‫então basicamente, este objeto aqui é o que estará aqui.
‫Então, apenas as avaliações em
‫que o tour corresponde ao ID serão encontradas.
‫Então, se tudo for uma chamada de API
‫normal sem rota aninhada, então esse filtro será simplesmente esse
‫objeto vazio, e então vamos encontrar todos os comentários, ok?
‫E, então, vamos realmente
‫testar isso, porque isso é tudo que precisamos mudar aqui, certo?
‫Então, vamos
‫salvar este aqui, este também, certo?
‫E então, para começar, vamos testar se
‫nosso getAllReviews, então o normal, ainda funciona como pretendido, ok?
‫Portanto, recebemos todas as quatro análises que estão em nossa coleção.
‫Vamos apenas verificar
‫isso e, de fato, existem quatro documentos, ok?
‫Mas agora,
‫vamos criar nossa rota getAllReviews aninhada, certo?
‫Então, o que vou fazer é copiar este.
‫Ok, e então simplesmente adicione comentários, ok?
‫E então este passeio é o City Wanderer, e
‫na verdade ele tem uma crítica.
‫E então, esperamos agora obter
‫um array com um objeto lá, ok?
‫Então, só teve uma revisão.
‫E, de fato, é exatamente isso que obtemos.
‫Essas são todas as reviews que estão presentes nesse tour, então,
‫o tour com esse ID.
‫E, na verdade, isso está bem correto, certo?
‫Vamos tentar outro, e eu me lembro que este, o
‫Forest Hiker, na verdade teve, acho, duas avaliações.
‫Então, vamos ver se isso funciona bem.
‫E então sim, de fato.
‫Aqui há.
‫Tudo bem?
‫Então, vamos salvar isso, ainda na pasta de tours /
‫revisão, e obterAllReviews no tour.
‫Certo, ótimo.
‫Na verdade, isso é tudo que eu tenho para mostrar a você sobre as rotas aninhadas.
‫Então, a seguir, vamos continuar enchendo nosso controlador
‫de revisão, porque agora só temos
‫getAllReviews e createReview.
‫E então também queremos
‫atualizar, deletar e todas essas coisas,
‫então vamos cuidar disso na próxima aula.