‫Instrutor: Então, incorporamos
‫usuários aos passeios no último vídeo
‫e também falamos sobre
‫as desvantagens dessa abordagem em nossa situação específica.
‫E então, neste vídeo, vamos conectar tours e
‫usuários não por meio de incorporação, mas por meio de uma referência.
‫E então,
‫para começar, vamos realmente nos livrar do código que escrevemos na última aula.
‫Ok, então este
‫aqui, responsável por realizar a incorporação basicamente.
‫E agora vamos aqui para o nosso campo de guias.
‫OK?
‫Portanto, desta vez neste
‫vídeo, a ideia é que passeios e usuários sempre permanecerão entidades
‫completamente separadas em nosso banco de dados.
‫OK?
‫Portanto, tudo o que salvamos em um determinado
‫documento de passeio são os IDs dos usuários que são
‫os guias desse passeio específico.
‫Então, quando consultamos o
‫passeio, queremos ter acesso automático aos guias turísticos.
‫Mas, novamente, sem que eles sejam
‫realmente salvos no próprio documento de passeio.
‫E isso é exatamente referência.
‫Assim como falamos no início desta seção.
‫Tudo bem?
‫E então,
‫deixe-me mostrar como podemos implementar a referência usando o Mongoose.
‫OK?
‫Portanto, aqui nos guias, agora queremos especificar um array.
‫OK?
‫Assim como fizemos antes com as locações.
‫E isso significa
‫novamente que estes serão alguns subdocumentos.
‫Então, documentos embutidos.
‫Tudo bem?
‫E agora o tipo
‫será um novo tipo que nunca vimos antes.
‫E isso é mangusto. Esquema. objectId.
‫OK?
‫E o que isso significa é que esperamos
‫que um tipo de cada
‫um dos elementos na matriz de guias seja um ID do MongoDB.
‫Tudo bem?
‫E aqui, na verdade, ele precisa ser um O
‫maiúsculo, ok, caso contrário, não vai
‫funcionar, e também tudo isso aqui precisa estar dentro de um objeto,
‫como qualquer outra definição de tipo de esquema.
‫Ok, porque isso é tudo que realmente é.
‫Ok, então o tipo é esse ID do MongoDB, basicamente,
‫e agora também precisamos especificar a referência.
‫E é aí que a mágica acontece
‫nos bastidores, porque aqui, agora dizemos que a referência deve ser o usuário.
‫Ok, então é assim que estabelecemos referências entre
‫diferentes conjuntos de dados no Mongoose.
‫E para isso não precisamos
‫nem mesmo que o usuário seja importado para este documento.
‫Na verdade, tínhamos isso aqui, mas nem mesmo precisamos.
‫Tínhamos isso aqui na aula
‫anterior, mas podemos comentar,
‫porque o que acabamos de fazer aqui ainda vai funcionar.
‫OK?
‫Então, vamos agora criar uma nova turnê e, na verdade,
‫vou fazer do jeito que fizemos antes.
‫Então, vamos excluir este.
‫Onde está o ID?
‫Aqui vamos nós.
‫Portanto, exclua o tour.
‫Portanto, já podemos usar nossa API para isso.
‫Tudo bem, agora vamos criar um novo tour.
‫E assim, como
‫antes, tudo o que passamos para os guias é uma matriz de IDs.
‫Tudo bem?
‫Mas desta vez
‫especificamos que um ID de objeto é exatamente o que esperamos.
‫Direito?
‫Portanto, este aqui é do tipo ID de objeto.
‫Mas, nos bastidores, também é referenciado ao usuário.
‫Tudo bem?
‫Portanto, quando criarmos este passeio aqui,
‫ele conterá apenas esses IDs,
‫e não o usuário correspondente aos IDs.
‫Então, vamos dar uma olhada nisso.
‫E então sim, vamos lá.
‫Então, esses são exatamente os dados que colocamos.
‫Apenas as identificações dos guias turísticos.
‫Ok, e isso é exatamente o que esperávamos.
‫Porque, por enquanto, tudo o que realmente temos
‫são as referências dentro do Mongoose.
‫E então cuidaremos de realmente obter os
‫dados para aparecer em nossa saída no próximo vídeo.
‫Ok, porque faremos isso de duas maneiras diferentes.
‫Vamos também dar uma olhada aqui
‫no Compass bem rápido, só para ver também onde está, sim, aqui.
‫Então, você vê o ID do objeto
‫na verdade e, é claro, os IDs que passamos.
‫Assim como esperávamos com tours e usuários, ainda
‫são duas entidades completamente diferentes.
‫E como eu disse antes, no
‫próximo vídeo, vamos cuidar de realmente exibir
‫os dados do usuário
‫na saída, usando um processo chamado preenchimento.