﻿1
00:00:01,336 --> 00:00:03,960
‫Instrutor: Neste vídeo, vamos continuar a

2
00:00:03,960 --> 00:00:06,900
‫traduzir o modelo de dados que estabelecemos bem

3
00:00:06,900 --> 00:00:09,600
‫no início da seção em algum código real.

4
00:00:09,600 --> 00:00:13,023
‫E então, desta vez, vamos implementar o modelo de avaliações.

5
00:00:14,780 --> 00:00:17,870
‫Portanto, a primeira etapa é criar um novo arquivo na

6
00:00:17,870 --> 00:00:22,273
‫pasta de modelos e chamá-lo de ReviewModel. js.

7
00:00:25,800 --> 00:00:29,480
‫E para mim, esse parece ser mais um grande desafio

8
00:00:29,480 --> 00:00:31,640
‫para você praticar algumas das

9
00:00:31,640 --> 00:00:34,090
‫habilidades que já aprendeu até agora.

10
00:00:34,090 --> 00:00:36,890
‫Ok, então, neste desafio, quero que você crie o

11
00:00:36,890 --> 00:00:38,200
‫modelo de revisão.

12
00:00:38,200 --> 00:00:41,370
‫E o que precisamos é realmente muito simples.

13
00:00:41,370 --> 00:00:43,220
‫Deixe-me colocar isso aqui em um comentário.

14
00:00:44,360 --> 00:00:46,090
‫Basicamente, queremos uma revisão,

15
00:00:46,090 --> 00:00:48,030
‫então o texto da revisão.

16
00:00:48,030 --> 00:00:49,350
‫Queremos uma

17
00:00:50,230 --> 00:00:51,840
‫classificação assim como esta.

18
00:00:51,840 --> 00:00:54,950
‫Em seguida, também queremos um createdAt so com

19
00:00:54,950 --> 00:00:56,760
‫o carimbo de data

20
00:00:56,760 --> 00:01:00,880
‫/ hora atual e também queremos uma referência ao tour ao

21
00:01:00,880 --> 00:01:02,590
‫qual esta revisão

22
00:01:02,590 --> 00:01:05,793
‫pertence e também ao usuário que a escreveu.

23
00:01:07,870 --> 00:01:12,090
‫Ok, basicamente duas referências de pais aqui, certo.

24
00:01:12,090 --> 00:01:14,270
‫E assim, com o que você

25
00:01:14,270 --> 00:01:15,790
‫aprendeu nas últimas aulas,

26
00:01:15,790 --> 00:01:18,410
‫você deve ser capaz de completar este

27
00:01:18,410 --> 00:01:19,660
‫desafio completamente sozinho.

28
00:01:19,660 --> 00:01:23,033
‫Então, pause o vídeo agora e boa sorte com isso.

29
00:01:26,690 --> 00:01:29,430
‫Agora, ok, então espero que você não tenha simplesmente

30
00:01:29,430 --> 00:01:33,070
‫ignorado isso e, em vez disso, você realmente o implementou por si mesmo

31
00:01:33,070 --> 00:01:35,813
‫e, de qualquer forma, foi assim que eu o criei.

32
00:01:36,780 --> 00:01:39,490
‫Portanto, é claro, precisamos começar exigindo o mangusto e, em

33
00:01:46,880 --> 00:01:47,713
‫seguida, o

34
00:01:50,728 --> 00:01:54,480
‫reviewSchema é igual ao novo mangusto. Esquema.

35
00:02:00,780 --> 00:02:03,053
‫E então vamos começar a adicionar nossos campos.

36
00:02:03,960 --> 00:02:06,790
‫Portanto, primeiro, a revisão é, obviamente, uma string.

37
00:02:06,790 --> 00:02:09,830
‫Agora, certo e claro, estou fazendo isso muito

38
00:02:09,830 --> 00:02:12,660
‫rápido, então eu também preciso especificar o

39
00:02:12,660 --> 00:02:15,013
‫tipo e então vamos também

40
00:02:16,930 --> 00:02:17,763
‫definir

41
00:02:19,180 --> 00:02:22,623
‫como obrigatório, verdadeiro, a revisão não pode estar vazia.

42
00:02:23,820 --> 00:02:26,333
‫Então queremos uma classificação,

43
00:02:30,130 --> 00:02:32,663
‫e esta é do tipo número.

44
00:02:33,940 --> 00:02:37,333
‫E a classificação idealmente é entre um e cinco.

45
00:02:38,580 --> 00:02:43,580
‫E assim, o mínimo de um e o máximo são cinco.

46
00:02:43,620 --> 00:02:44,700
‫Como você

47
00:02:44,700 --> 00:02:47,000
‫já sabe, esses são alguns validadores simples.

48
00:02:47,000 --> 00:02:50,260
‫Isso funciona apenas para números, certo.

49
00:02:50,260 --> 00:02:51,543
‫Isso não está correto aqui.

50
00:02:52,570 --> 00:02:53,640
‫OK.

51
00:02:53,640 --> 00:02:55,733
‫Em seguida, o createdAt.

52
00:02:59,630 --> 00:03:01,783
‫Isso é do tipo,

53
00:03:05,120 --> 00:03:07,360
‫data e, por padrão, queremos

54
00:03:10,380 --> 00:03:12,300
‫Data. agora.

55
00:03:12,300 --> 00:03:13,133
‫OK.

56
00:03:14,480 --> 00:03:16,700
‫Então essa foi a parte fácil.

57
00:03:16,700 --> 00:03:18,980
‫E vamos criar um modelo

58
00:03:18,980 --> 00:03:21,523
‫e exportá-lo antes de adicionar essas referências.

59
00:03:22,930 --> 00:03:25,023
‫Então const, Review is

60
00:03:26,090 --> 00:03:29,710
‫equal too mongoose. modelo com o

61
00:03:32,630 --> 00:03:34,320
‫nome Review.

62
00:03:34,320 --> 00:03:35,920
‫E então, claro, reviewSchema.

63
00:03:41,210 --> 00:03:44,430
‫Para finalizar o módulo do curso. exportar

64
00:03:46,040 --> 00:03:49,340
‫é igual a Review.

65
00:03:49,340 --> 00:03:52,890
‫Tudo bem, agora vem a parte de referência.

66
00:03:52,890 --> 00:03:56,880
‫Portanto, uma revisão de curso precisa pertencer a um tour.

67
00:03:56,880 --> 00:03:58,900
‫E também precisa de um autor.

68
00:03:58,900 --> 00:03:59,733
‫OK.

69
00:03:59,733 --> 00:04:01,710
‫Então, isso é novamente o que

70
00:04:01,710 --> 00:04:03,910
‫especificamos em nossa aula de modelagem de dados.

71
00:04:03,910 --> 00:04:06,000
‫Então, basicamente, íamos implementar

72
00:04:06,000 --> 00:04:09,030
‫a referência dos pais aqui neste caso.

73
00:04:09,030 --> 00:04:12,060
‫Porque tanto o tour quanto o usuário são, de

74
00:04:12,060 --> 00:04:15,020
‫certa forma, os pais desse conjunto de dados.

75
00:04:15,020 --> 00:04:17,080
‫E decidimos fazer desta

76
00:04:17,080 --> 00:04:18,790
‫forma porque vamos

77
00:04:18,790 --> 00:04:22,140
‫apagar potencialmente todos os elementos pais, certo?

78
00:04:22,140 --> 00:04:24,680
‫Portanto, não devemos projetar nosso

79
00:04:24,680 --> 00:04:27,600
‫aplicativo pensando que haverá apenas alguns comentários.

80
00:04:27,600 --> 00:04:30,660
‫Só para então voltar a ele depois de algum

81
00:04:30,660 --> 00:04:33,700
‫tempo e descobrir que nossas suposições estavam erradas.

82
00:04:33,700 --> 00:04:36,660
‫E agora precisamos reconstruir todo o nosso modelo de dados.

83
00:04:36,660 --> 00:04:38,340
‫Então isso seria terrível.

84
00:04:38,340 --> 00:04:41,110
‫Então, em muitas situações, como você já sabe

85
00:04:41,110 --> 00:04:44,520
‫o que realmente não sabemos, o quanto nosso apagamento vai crescer.

86
00:04:44,520 --> 00:04:47,970
‫Então, é melhor optar pela referência dos pais.

87
00:04:47,970 --> 00:04:50,580
‫Então, novamente, isso é exatamente o que estamos

88
00:04:50,580 --> 00:04:53,400
‫fazendo aqui quando estamos referenciando o tour e o usuário.

89
00:04:53,400 --> 00:04:56,383
‫Então, vamos prosseguir e implementar isso.

90
00:04:57,390 --> 00:04:58,853
‫E começando com o tour.

91
00:05:01,070 --> 00:05:02,650
‫Tudo bem.

92
00:05:02,650 --> 00:05:06,153
‫Então, aqui precisamos de algum espaço e tudo bem.

93
00:05:07,630 --> 00:05:12,140
‫Então, o tipo é como fazíamos antes, mangusto, e isso não

94
00:05:12,140 --> 00:05:13,423
‫é correto.

95
00:05:14,290 --> 00:05:18,593
‫Então mangusto. Esquema. ObjectId, com

96
00:05:21,600 --> 00:05:25,890
‫O maiúsculo e I maiúsculo, mas não o D.

97
00:05:25,890 --> 00:05:26,930
‫E só

98
00:05:26,930 --> 00:05:29,760
‫estou dizendo isso porque uma vez escrevi um ID

99
00:05:29,760 --> 00:05:32,370
‫assim e depois passei meia hora tentando descobrir

100
00:05:32,370 --> 00:05:34,560
‫por que meu aplicativo não estava funcionando.

101
00:05:34,560 --> 00:05:37,293
‫Ok, então este D precisa ser minúsculo.

102
00:05:38,880 --> 00:05:39,713
‫De qualquer forma.

103
00:05:39,713 --> 00:05:44,540
‫A referência neste caso é, claro, o tour.

104
00:05:44,540 --> 00:05:46,813
‫E também queremos tornar isso obrigatório.

105
00:05:49,680 --> 00:05:54,680
‫Tão verdadeiro e, em seguida, Review deve pertencer a

106
00:05:57,300 --> 00:05:58,780
‫um tour.

107
00:05:58,780 --> 00:05:59,670
‫OK.

108
00:05:59,670 --> 00:06:02,820
‫E assim, cada documento de revisão agora

109
00:06:02,820 --> 00:06:05,870
‫sabe exatamente a que tour pertence.

110
00:06:05,870 --> 00:06:08,570
‫Embora o tour, é claro, não

111
00:06:08,570 --> 00:06:11,640
‫saiba inicialmente quais Avaliações e quantas avaliações existem.

112
00:06:11,640 --> 00:06:13,070
‫Mas é um problema

113
00:06:13,070 --> 00:06:14,820
‫que resolveremos um pouco mais tarde.

114
00:06:16,290 --> 00:06:17,220
‫OK.

115
00:06:17,220 --> 00:06:20,453
‫Em seguida, quando houver uma Review, não queremos

116
00:06:20,453 --> 00:06:23,270
‫apenas saber a que tour ela pertence,

117
00:06:23,270 --> 00:06:25,373
‫mas também quem a escreveu.

118
00:06:26,570 --> 00:06:27,933
‫Então,

119
00:06:29,580 --> 00:06:32,410
‫usuário, e novamente, o mesmo

120
00:06:32,410 --> 00:06:37,243
‫tipo de mangusto. Esquema. ObjectId, e desta

121
00:06:38,610 --> 00:06:39,443
‫vez

122
00:06:39,443 --> 00:06:44,443
‫a referência, como você pode imaginar, será o usuário.

123
00:06:44,460 --> 00:06:47,880
‫Ok, e novamente tornamos isso obrigatório

124
00:06:47,880 --> 00:06:51,960
‫porque, bem, uma revisão realmente não pode funcionar

125
00:06:51,960 --> 00:06:54,830
‫sem um autor basicamente.

126
00:06:54,830 --> 00:06:56,800
‫E, portanto, a

127
00:06:58,250 --> 00:07:01,163
‫revisão deve pertencer a um usuário.

128
00:07:05,080 --> 00:07:06,563
‫Ok, é realmente isso.

129
00:07:07,470 --> 00:07:08,303
‫Tudo bem.

130
00:07:09,670 --> 00:07:12,750
‫Agora, para terminar, vamos adicionar essas opções

131
00:07:12,750 --> 00:07:16,280
‫ao Schema onde fazemos para que as propriedades virtuais

132
00:07:16,280 --> 00:07:19,470
‫também apareçam nas saídas Json e de objetos.

133
00:07:19,470 --> 00:07:20,303
‫OK.

134
00:07:20,303 --> 00:07:22,450
‫Então fizemos isso antes nas turnês.

135
00:07:22,450 --> 00:07:25,290
‫Não tenho certeza se fizemos isso no modelo do usuário.

136
00:07:25,290 --> 00:07:27,080
‫De qualquer forma, aqui vamos precisar disso

137
00:07:27,080 --> 00:07:28,480
‫um pouco mais tarde.

138
00:07:28,480 --> 00:07:30,160
‫Portanto, precisamos especificar isso.

139
00:07:30,160 --> 00:07:32,710
‫Lembre-se, basicamente o que quero dizer

140
00:07:36,320 --> 00:07:37,860
‫é esta parte.

141
00:07:37,860 --> 00:07:40,570
‫Então, na verdade, vou copiá-lo.

142
00:07:40,570 --> 00:07:42,023
‫Só para nos poupar algum tempo.

143
00:07:45,250 --> 00:07:48,580
‫E então, novamente, tudo o que isso faz é realmente garantir

144
00:07:48,580 --> 00:07:50,730
‫que, quando temos uma propriedade virtual,

145
00:07:50,730 --> 00:07:53,350
‫basicamente um campo que não é armazenado no banco

146
00:07:53,350 --> 00:07:55,850
‫de dados, mas calculado usando algum outro valor.

147
00:07:55,850 --> 00:07:59,670
‫Portanto, queremos que isso também apareça sempre que houver uma saída.

148
00:07:59,670 --> 00:08:02,113
‫Certo, é isso que fazemos aqui.

149
00:08:03,130 --> 00:08:03,963
‫OK.

150
00:08:03,963 --> 00:08:07,490
‫E então eu realmente acho que é isso por agora.

151
00:08:07,490 --> 00:08:08,550
‫Muito simples.

152
00:08:08,550 --> 00:08:11,530
‫A única parte um pouco complicada é criar

153
00:08:11,530 --> 00:08:13,010
‫essas referências aqui.

154
00:08:13,010 --> 00:08:14,680
‫Mas já fizemos

155
00:08:14,680 --> 00:08:17,673
‫isso antes e funciona exatamente da mesma maneira.

156
00:08:19,430 --> 00:08:21,800
‫Portanto, no próximo vídeo, usaremos

157
00:08:21,800 --> 00:08:24,470
‫o Schema para criar alguns novos comentários.

158
00:08:24,470 --> 00:08:25,653
‫Então, vejo você então.

