‫Jonas: Vamos continuar criando algumas funções de
‫fábrica, desta vez para atualizar e criar alguns recursos.
‫E então, agora que já sabemos como
‫funciona, é muito simples continuar fazendo o mesmo para
‫a atualização.
‫Portanto, as exportações. updateOne, e
‫vamos seguir em frente e copiar o código novamente
‫do controlador de tour.
‫OK.
‫E agora temos uma tonelada de
‫arquivos abertos porque, na verdade, estamos alterando todos
‫eles ao mesmo tempo.
‫Então, vamos copiar e
‫colar aqui.
‫E então, o que nos interessa é, novamente, esta parte.
‫OK.
‫E agora, é claro, precisamos criar essa função de fábrica
‫porque não queremos retornar isso.
‫Em vez disso, queremos retornar
‫uma função que, por sua vez, retornará isso.
‫Direito?
‫Então isso é muito simples.
‫Usamos uma função de seta simples onde passamos o modelo
‫e, em seguida, retornamos implicitamente o que quer que venha depois da seta.
‫Então, tudo isso.
‫Tudo bem.
‫Assim como antes, vamos substituir o modelo
‫específico por um
‫geral e, em seguida, substituir tudo isso aqui por documento.
‫Ou, na verdade, com o doutor, como fizemos antes.
‫E aqui não é
‫nenhum documento, e aqui embaixo, para onde realmente enviamos os
‫dados, seria bom dar a ele o nome da propriedade
‫dos dados que estamos enviando.
‫Por exemplo, revisões e, em seguida, o documento ou tours.
‫OK.
‫Mas isso é um pouco demais para implementá-lo agora.
‫E então, vou simplesmente deixar assim para onde
‫enviei, novamente, os dados.
‫Tudo bem.
‫Então foram nossos dados
‫aqui, e então o envelope ali será, novamente,
‫chamado de dados.
‫Tudo bem.
‫E então, isso deve funcionar
‫agora porque todo o resto é realmente o mesmo.
‫E assim, podemos ir em frente, nos livrar de tudo
‫isso e simplesmente dizer
‫fábrica. updateOne, passe
‫o modelo Tour e dê um basta no dia.
‫Tudo bem?
‫Então, muito simples.
‫Em seguida, a mesma coisa para os usuários.
‫Então, novamente, temos updateUser.
‫Esta rota ainda não foi implementada.
‫E então, vamos simplesmente substituir tudo isso aqui pela
‫nossa função de fábrica updateOne.
‫Tudo bem.
‫E então, como antes, esta função updateUser
‫é apenas para administradores, ok?
‫E apenas para atualizar dados que não
‫sejam a senha, pois lembre-se, sempre que usarmos, onde está isso, então
‫sempre que usarmos findById e update, todo o
‫middleware seguro não será executado.
‫Então, lembre-se de como falamos sobre isso algumas vezes.
‫E então, novamente,
‫é muito importante que não tentemos alterar as senhas
‫aqui usando este updateUser.
‫OK?
‫Vamos realmente escrever isso aqui.
‫Com isso.
‫Excelente.
‫E agora, finalmente,
‫vamos colocá-lo no controlador de revisão.
‫Tudo bem.
‫Portanto, as exportações. updateReview
‫e, em seguida, nosso Review.
‫Então esse é muito simples.
‫Vamos agora adicionar essas rotas ao Postman também.
‫Portanto, temos
‫Excluir comentário e agora vamos simplesmente adicioná-lo aqui como PATCH.
‫E a coisa que também precisamos implementar a rota
‫no roteador de revisão.
‫Então, vamos fazer isso também.
‫Mas, primeiro, vou salvá-lo aqui nos comentários.
‫Portanto, atualize a revisão.
‫Portanto, aqui, nas rotas de revisão, devemos
‫adicionar o método patch e, em seguida,
‫reviewController. updateReview.
‫Tudo bem.
‫Então, vamos dar uma olhada em um
‫desses comentários aqui, digamos este, e atualizar a classificação para quatro.
‫OK.
‫Portanto, o
‫corpo, defina-o para quatro.
‫E envie agora.
‫Ok, e como podemos ver, recebemos nossa nova análise de volta
‫com a classificação atualizada, conforme o esperado.
‫E, novamente, cuidaremos da autorização um pouco mais
‫adiante nesta seção.
‫Por enquanto, eu só queria fazer isso funcionar.
‫Então, usuários, agora também vamos atualizar os usuários.
‫OK?
‫Então GET e PATCH.
‫Então, vamos trazer todos os usuários aqui.
‫Vamos dizer este.
‫E vamos mudar
‫o
‫nome para Administrador, que antes era simplesmente admin.
‫Tudo bem?
‫E então, este funcionou bem.
‫Ok, então novamente, estou salvando tudo isso aqui na minha coleção porque, então, um
‫pouco mais tarde, eu
‫posso realmente ir em frente e criar a
‫documentação de todos os dados da coleção que temos aqui.
‫Então, atualize o
‫usuário, coloque aquele aqui e este aqui.
‫Perfeito.
‫Portanto, atualizar os usuários agora está funcionando para
‫todos os nossos três recursos usando a função de fábrica.
‫E então, vamos adicionar o próximo,
‫que será o createOne.
‫Portanto, exportações, createOne.
‫E novamente, passamos no modelo.
‫E a partir daí, criamos uma nova função.
‫E isso pode, mais
‫uma vez, realmente copiá-lo do Tour aqui.
‫Tudo bem.
‫E então, o que precisamos aqui é apenas esta parte.
‫Portanto, modele e documente.
‫E aqui embaixo, nós novamente o chamamos de dados.
‫Tudo bem.
‫E então, é isso mesmo.
‫Essa é a nossa função de fábrica.
‫E então, novamente, vamos vir aqui e substituí-lo.
‫Então fábrica. createOne, Tour.
‫Então você vê que nosso código
‫nos controladores está ficando realmente limpo, certo?
‫Mas, na verdade, não vamos conseguir substituir
‫todas as funções que temos aqui por fábricas, porque
‫senão, nem precisaríamos desse arquivo
‫de controlador, certo?
‫Poderíamos então simplesmente criar esses manipuladores dinamicamente, basicamente
‫no arquivo do roteador, certo?
‫E assim, podemos basicamente pular toda essa
‫etapa do arquivo do controlador.
‫Mas, novamente, ainda
‫precisamos porque temos algumas outras coisas lá.
‫Por exemplo, esses métodos aqui para
‫obter as estatísticas do passeio, ou este plano
‫mensal, e sim.
‫Portanto, faz sentido realmente manter este arquivo, certo?
‫Então, a seguir,
‫para os usuários, na verdade não precisamos do
‫createOne porque, para criar
‫novos usuários, já temos a função
‫signUp, e não podemos realmente substituí-la por
‫uma fábrica porque é realmente diferente deste genérico.
‫OK?
‫Mas podemos fazer isso no controlador de revisão, ok?
‫Então, basicamente, queremos substituir esse createReview.
‫Agora você vê que
‫também, neste, temos alguma etapa adicional.
‫Portanto, temos esse código que
‫também não está em nossa função createOne genérica.
‫E então, como podemos consertar isso?
‫Bem, podemos realmente criar um
‫middleware que será executado antes do createReview, certo?
‫E isso também o torna um pouco mais desacoplado.
‫Então, basicamente, este código aqui estará em sua própria
‫função, e
‫realmente desacoplado de createReview, porque, na verdade,
‫ele não tem muito a ver
‫com a criação da revisão.
‫Ele simplesmente define alguns dados, certo?
‫E então, vamos chamar isso de tour pelo conjunto e IDs de usuário.
‫Então, peça, ah, falta resposta.
‫OK?
‫E tudo o que
‫vamos fazer aqui é basicamente definir esses IDs no corpo e,
‫em seguida, ir direto para o
‫próximo middleware, onde a revisão é realmente criada.
‫Tudo bem?
‫Portanto, antes
‫de esquecermos, vamos adicionar esse middleware.
‫Portanto, nas rotas de revisão, está bem aqui na postagem.
‫Portanto, reviewController, setTourUserIds.
‫OK?
‫Portanto, mais uma função de middleware nesta pilha.
‫OK.
‫De qualquer forma, vamos então nos livrar do que temos
‫aqui porque isso pode ser
‫facilmente substituído por nossa função de fábrica, mais uma vez.
‫Então, crie um, depois a Revisão e é isso.
‫OK.
‫E apenas para testar se isso
‫ainda funciona, vamos simplesmente prosseguir e criar uma nova avaliação no Tour.
‫OK?
‫E para isso, precisamos dos IDs de tour,
‫então digamos também Get All Tours.
‫E agora temos que o usuário pertencente não existe mais, então vamos simplesmente
‫prosseguir e fazer o login novamente.
‫Portanto, obtenha um novo token aqui.
‫E aí vamos nós, como administrador.
‫Então agora, Get All Tours, vamos lá.
‫Vamos apenas escolher um deles.
‫Então, digamos, The Forest Hiker.
‫Acho que esse aqui já tem algumas resenhas, não é?
‫Oh não, não faz.
‫Portanto, este é bom para experimentar agora.
‫E então, crie uma nova avaliação no tour.
‫Lembre-se, temos que alterar o ID aqui.
‫E agora podemos postar
‫essa avaliação apenas com a avaliação e a avaliação.
‫Mas acho que na
‫verdade não vai funcionar porque estamos logados como
‫um administrador e apenas usuários regulares podem postar comentários.
‫OK?
‫Tudo bem, então ainda vamos fazer isso aqui.
‫Surpreendente.
‫Mas vamos obter este erro que acabei de dizer.
‫Portanto, você não tem permissão para executar.
‫E então, precisamos fazer
‫login novamente, desta vez como um usuário diferente.
‫E vamos dar uma olhada em qual temos, na verdade.
‫Ah ok.
‫Então, vamos usar o teste.
‫Ou talvez teste fosse aquele com a senha errada.
‫Mas vamos ver.
‫Ah sim.
‫Então, vamos experimentar o testuser.
‫E este funciona.
‫E então, na verdade, podemos ir em frente e deletar este
‫outro porque eu meio que esqueci a senha dele.
‫OK.
‫E, neste caso, não há problema.
‫Podemos simplesmente excluir usuários como quisermos, já que
‫estamos apenas em desenvolvimento.
‫OK?
‫Agora devemos ser capazes de realmente adicionar esta revisão.
‫E, de fato, aqui vamos nós.
‫Perfeito.
‫Então isso encerra esta palestra.
‫Tudo o que precisamos fazer
‫no próximo é criar as funções
‫de fábrica para obter um e obter todos os documentos
‫de um determinado recurso.