‫Instrutor: Na última aula,
‫aprendemos sobre os esquemas e modelos do
‫Mongoose, e agora vamos implementar um
‫esquema e modelo muito simples para nosso aplicativo.
‫E por enquanto, vamos fazer isso aqui mesmo
‫em nosso servidor. arquivo js.
‫Mais tarde, é claro,
‫vamos mover isso para um arquivo diferente.
‫Portanto, Mongoose tem tudo a ver com modelos,
‫e um modelo é como
‫um projeto que usamos para criar documentos.
‫Então é um pouco como classes em
‫JavaScript, que também usamos como
‫projetos para criar objetos a partir deles, certo?
‫Então, novamente, criamos um modelo no
‫Mongoose para criar documentos usando-o
‫e também para consultar, atualizar e excluir esses documentos.
‫Então, basicamente, para realizar cada uma das operações CRUD,
‫criar, ler, atualizar e excluir, precisamos
‫de um modelo Mongoose e, para criar um
‫modelo, na verdade precisamos de um esquema.
‫Então, nós realmente criamos modelos a
‫partir do esquema Mongoose, assim
‫como aprendemos no último vídeo, e usamos
‫o esquema para descrever nossos dados, para definir valores padrão,
‫para validar os dados e todos os tipos de coisas assim.
‫Assim como você verá
‫agora, porque agora vamos começar a
‫criar um esquema muito simples para nossos passeios.
‫Então, digamos que tourSchema é um
‫novo mangusto. Esquema.
‫Adicione que aqui nós realmente passamos nosso esquema como um objeto.
‫Tudo bem, podemos então passar algumas opções para o
‫esquema, mas vou deixar isso para um vídeo
‫futuro, onde realmente precisamos desse recurso.
‫Então, lembra dos documentos de tour que
‫criamos na última seção quando
‫começamos a explorar o Mongoose DB?
‫Sempre demos a
‫eles um nome, uma classificação e
‫um preço, certo, e agora vamos
‫replicar isso aqui, dizendo o nome e, em
‫seguida, descrevendo que tipo de dados queremos após
‫o nome, e queremos que seja uma string.
‫Portanto, o Mongoose realmente
‫usa os tipos de dados nativos do JavaScript, e
‫aqui podemos dizer string ou, após a classificação, podemos dizer
‫que queremos um número igual ao preço.
‫Também deve ser um número, certo?
‫Portanto, esta é a maneira mais básica de descrever nossos dados.
‫Portanto, temos um nome, uma classificação e um
‫preço, e especificamos o
‫tipo de dados que esperamos para cada um desses campos.
‫Portanto, novamente, esta é a
‫maneira mais básica de descrever um esquema, mas
‫podemos dar um passo adiante definindo algo
‫chamado opções de tipo de esquema para cada
‫campo ou apenas para algum campo específico.
‫Portanto, vamos começar aqui com o
‫nome e, em
‫vez de apenas especificá-lo como uma string, vamos passar outro objeto.
‫E agora, dizemos que queremos que o tipo
‫seja string, mas
‫agora podemos definir mais algumas opções, certo?
‫Por exemplo, podemos dizer que este campo é obrigatório, então
‫simplesmente
‫definimos a propriedade required aqui como true, certo?
‫Portanto, novamente, este objeto aqui são as opções de tipo de esquema
‫e podem ser diferentes para diferentes tipos,
‫por exemplo, o tipo de
‫número tem algumas opções de esquema diferentes da
‫string aqui, mas muitas delas também são semelhantes.
‫Por exemplo, o obrigatório, podemos
‫usá-lo no número também, então vamos fazer isso aqui.
‫Então, o tipo, ainda queremos que
‫seja um número e também queremos que seja obrigatório, certo?
‫Agora, aqui no obrigatório, podemos
‫realmente especificar o erro que desejamos exibir quando
‫este campo estiver faltando.
‫Então, para fazer isso,
‫só temos que passar um array, e o primeiro é verdadeiro.
‫Portanto, o primeiro elemento é verdadeiro e o
‫segundo é a string de erro.
‫Digamos que um passeio deve ter um nome, e aqui vamos
‫fazer o mesmo.
‫O passeio deve ter um preço, ok?
‫Então, também podemos definir os valores
‫padrão e vamos fazer isso aqui para a classificação.
‫Então, novamente, vou especificar algumas
‫opções de tipo de esquema aqui, o que não é
‫obrigatório, então é suficiente simplesmente definir
‫o tipo aqui como fizemos, mas se você
‫quiser mais alguns recursos, precisamos pelo
‫menos especificar o esquema tipo de objeto de opções.
‫Ok, então precisamos especificar o tipo novamente, que é um número e,
‫como padrão, quero que seja 4. 5
‫Portanto, se criarmos um novo documento de
‫passeio usando esse esquema e não especificando a classificação,
‫ele será definido automaticamente como 4. 5, certo?
‫E só para terminar, vamos tentar outro aqui, que quer
‫dizer que o nome deve ser único.
‫Então, único e definido como verdadeiro, e assim,
‫agora podemos ter dois
‫documentos de turnê com o mesmo nome, certo?
‫Portanto, este é o nosso esquema
‫básico, vamos agora em frente
‫e realmente criar um modelo a partir dele, certo?
‫E isso
‫é muito simples, simplesmente criamos uma variável chamada
‫Tour e, em seguida, mangusto. modelo, depois o nome do
‫modelo, que é Tour com um T maiúsculo aqui,
‫tudo bem.
‫E isso é uma espécie
‫de convenção na programação de sempre usar letras
‫maiúsculas nos nomes e variáveis do modelo.
‫Então aqui é o mesmo, então eu
‫também criei esta variável de passeio aqui com T maiúsculo apenas
‫para sabermos que estamos lidando com um modelo aqui.
‫Tudo bem, então o
‫nome do modelo e então o esquema, e é isso.
‫Assim, criamos um tour fora
‫do esquema que criamos aqui no início.
‫Tudo bem, então no
‫próximo vídeo vamos usar este
‫modelo aqui para criar nosso primeiro documento de turnê, certo?
‫Então, apenas uma recapitulação aqui, usamos um novo mangusto. Esquema aqui para
‫especificar um esquema para nossos dados.
‫Então, basicamente descrevendo e também fazendo algumas validações.
‫Por exemplo, isso é obrigatório
‫aqui, na verdade é algo chamado de validador
‫porque é usado para validar nossos dados.
‫Nesse caso, basta validar se o
‫nome realmente está lá.
‫E há muitos validadores no Mongoose, e
‫também podemos criar o nosso próprio, então
‫é claro que falaremos sobre
‫isso um pouco mais tarde, novamente, quando realmente precisarmos desses recursos.
‫De qualquer forma, vamos avançar rapidamente para
‫finalmente começar a usar o modelo
‫que acabamos de criar.