‫Instrutor Masculino: Ei, você!
‫Portanto, agora vamos aprender como ler documentos com o Mongoose para implementar
‫ou obter um tour e obter todos os manipuladores de rota
‫do tour.
‫E começando com o manipulador getAllTours.
‫Então, primeiro, vamos deletar este pedaço de código aqui.
‫E agora o
‫que vamos fazer para obter todos os tours do
‫banco de dados é usar o Tour.
‫Então, o modelo novamente.
‫No final, usamos o método find.
‫Tudo bem.
‫Portanto, lembre-se da interseção do MongoDB, onde
‫quando queríamos consultar todos os documentos,
‫simplesmente usamos find, ok?
‫E aqui, é exatamente o mesmo método.
‫E, novamente, quando não passarmos nada para ele,
‫assim como estamos
‫fazendo aqui, ele retornará todos
‫os documentos dessa coleção, certo?
‫Portanto, neste caso, na coleção de turismo, obviamente.
‫Agora, como antes, isso vai retornar uma promessa
‫que iremos aguardar.
‫E já que queremos
‫esperar, precisamos tornar esta função assíncrona.
‫Tão assíncrono.
‫Então, aqui podemos esperar e salvar o resultado em passeios.
‫Tudo bem.
‫E é isso mesmo.
‫Então, vamos nos livrar desses comentários aqui.
‫Também não queremos a propriedade requiredAt.
‫Então, isso foi apenas para teste antes.
‫E então, sim, acho que é isso.
‫É assim que obtemos todos os
‫tours da coleção Tour.
‫Usando find, aguardando o resultado
‫e enviando aqui.
‫Portanto, lembre-se de que temos essa propriedade de
‫dados aqui para basicamente envolver os passeios.
‫E aí a gente também manda essa propriedade
‫aqui, que simplesmente mede a quantidade de resultados
‫que estão nos tours, tudo bem.
‫OK?
‫Porque, é claro, esse método find
‫retornará uma matriz de todos esses documentos
‫e também os converterá em
‫objetos JavaScript, certo?
‫Portanto, esta função aqui, este método de localização,
‫realmente faz todo o trabalho para nós.
‫Agora, assim como
‫antes, mais uma etapa antes de podermos realmente tentar isso,
‫que é encerrar tudo isso aqui no bloco try e,
‫em seguida, detectar quaisquer erros em potencial.
‫Agora,
‫neste caso, não haverá nenhum erro de validação como antes.
‫Mas ainda vamos enviar um erro aqui, neste caso,
‫e vamos torná-lo um 404.
‫E realmente não importa muito neste ponto porque,
‫novamente, vamos implementar algum tratamento de
‫erros melhor aqui
‫na próxima, ou em uma das próximas seções.
‫Tudo bem?
‫Então, vamos apenas definir aqui o status: 'falha',
‫e a mensagem para qualquer erro que possamos obter aqui.
‫OK.
‫Então, vamos testar agora.
‫É este aqui, Get All Tours.
‫E, sim, funciona.
‫Portanto, aqui temos a matriz dos três passeios que
‫temos atualmente em nosso banco de dados.
‫Perfeito.
‫Então, a seguir, vamos implementar o manipulador getTour.
‫Então, vamos escrever o próximo que temos aqui.
‫E vamos nos livrar desse código
‫e desse código.
‫Tudo bem.
‫E este vai funcionar de uma maneira muito semelhante.
‫Então, ainda estou tentando pegar aqui.
‫Então, erro, assim.
‫Porque ainda estamos usando async await neste.
‫Tão assíncrono.
‫Porque agora, para encontrarmos um
‫tour, ainda estaremos aguardando o Tour. achar.
‫Mas não será apenas
‫find, mas em vez disso usaremos findById, certo.
‫Então, findById, mas de onde esse ID realmente vem?
‫Lembre-se disso?
‫Então, vamos dar uma olhada na rota.
‫Voltando aqui ao Postman,
‫é assim que chamamos este ponto
‫final, vamos colocar uma ID mais real aqui.
‫Então, por exemplo,
‫este do The Park Camper.
‫E então nosso pedido pode vir de uma rota como esta.
‫E aqui, temos esse parâmetro
‫de ID bem em nossa rota, certo?
‫Então, vamos dar uma olhada em nosso roteador aqui.
‫E então lembre-se de que é assim
‫que especificamos, o ID no URL.
‫Portanto, este ID fará parte do pedido, obviamente.
‫E então, como realmente obtemos acesso a esse ID aqui
‫e a este manipulador?
‫Bem, nós fazemos req. params, id.
‫E é
‫ID porque é assim que chamamos essa variável aqui, certo?
‫Se fosse o nome aqui, então
‫aqui tínhamos o req. params. nome, certo?
‫Lembre-se disso?
‫E agora, vamos salvar isso para o tour.
‫Agora tudo bem.
‫Então, vamos pegar esse código de volta.
‫Copie aqui.
‫E também este para o bloco de erro.
‫E não se preocupe, vou explicar essa função aqui
‫em um segundo.
‫Eu só quero terminar este código aqui primeiro.
‫Portanto, este pedaço de código aqui será exatamente o
‫mesmo para este bloco catch.
‫Salve-o agora
‫e não obteremos erros aqui do eslint.
‫Agora, sobre este método de localização de
‫ID aqui, bem, lembre-se de como aqui acabamos de usar encontrar, certo?
‫Portanto, localizar é localizar todos os documentos.
‫E também temos
‫findOne para localizar apenas um documento, ok?
‫E, portanto, este findById é na verdade apenas uma abreviação,
‫uma função auxiliar para, deixe-me escrevê-lo
‫aqui como um comentário, para
‫escrever findOne e,
‫em seguida, com o objeto de
‫filtro, que é exatamente como
‫aprendemos na interseção do MongoDB.
‫Portanto, temos o campo ID.
‫E então poderíamos definir isso como req. params. identificação.
‫Então isso aqui funcionaria exatamente da mesma maneira que isso, ok?
‫Então _id, porque é assim que o ID se parece.
‫Portanto, o MongoDB é chamado de _id.
‫E poderíamos, é claro, consultar esse campo, certo?
‫Fizemos exatamente isso na última seção.
‫Portanto, especificamos esse objeto de filtro aqui,
‫a propriedade que procuramos
‫e o valor que desejamos procurar.
‫Então, exatamente o mesmo de novo, como fizemos na última seção.
‫E este método
‫findOne aqui retornará apenas um dos documentos.
‫Agora, este findById, como mencionei
‫antes, é simplesmente um atalho para ter que escrever isso.
‫Então, nos bastidores, vai fazer exatamente isso.
‫Mas Mongoose simplesmente quer tornar nossa vida mais fácil.
‫E, portanto, nos dá acesso a um método
‫mais fácil chamado
‫findById, que simplesmente espera o ID que estamos procurando.
‫Tudo bem?
‫Então, deixe-me deixar isso aqui, apenas como uma referência.
‫E agora, isso realmente já funcionaria.
‫Então, vamos dar uma olhada nisso.
‫Então já colocamos o ID desse passeio.
‫Acho que foi esse Park Camper.
‫Então ac2.
‫E ac2, deveria ser The Park Camper, e
‫de fato é.
‫Excelente.
‫E essa é a maneira mais fácil de localizar
‫ou consultar documentos do banco de dados.
‫Há muito mais que podemos fazer com as consultas, e
‫faremos tudo isso
‫assim que começarmos a implementar algo como filtragem,
‫classificação ou paginação, e todas essas coisas
‫boas um pouco mais adiante nesta seção, então, em alguns
‫vídeos a partir de agora.
‫Porém, neste
‫ponto, é suficiente simplesmente retornar todos os documentos aqui neste
‫manipulador de rota.
‫E aqui, simplesmente aquele para o ID correspondente.
‫E isso funciona
‫agora, então vamos passar para o próximo.