﻿1
00:00:01,110 --> 00:00:02,900
‫Professor: Então, lembre-se de

2
00:00:02,900 --> 00:00:05,510
‫como, no vídeo sobre nosso modelo de dados,

3
00:00:05,510 --> 00:00:07,880
‫dissemos que poderíamos incorporar ou fazer referência

4
00:00:07,880 --> 00:00:10,204
‫aos dados do guia turístico, portanto,

5
00:00:10,204 --> 00:00:13,340
‫neste vídeo, vou mostrar como poderíamos implementar a incorporação

6
00:00:13,340 --> 00:00:16,393
‫de documentos de guia turístico em um documento turístico.

7
00:00:17,930 --> 00:00:20,320
‫Então, novamente, nesta aula vamos incorporar documentos

8
00:00:20,320 --> 00:00:23,700
‫do usuário em documentos de tour e, em seguida,

9
00:00:23,700 --> 00:00:25,840
‫no próximo vídeo, vou

10
00:00:25,840 --> 00:00:28,030
‫mostrar como podemos realmente fazer referência

11
00:00:28,030 --> 00:00:30,610
‫aos usuários em vez de incorporar, certo?

12
00:00:30,610 --> 00:00:33,020
‫Portanto, a ideia aqui é que, ao criar

13
00:00:33,020 --> 00:00:35,730
‫um novo documento de passeio, o usuário simplesmente adicionará

14
00:00:35,730 --> 00:00:38,630
‫uma matriz de IDs de usuário e, então, obteremos

15
00:00:38,630 --> 00:00:41,020
‫os documentos de usuário correspondentes com base

16
00:00:41,020 --> 00:00:42,827
‫nesses IDs e os

17
00:00:42,827 --> 00:00:44,800
‫adicionará aos nossos documentos de passeio.

18
00:00:44,800 --> 00:00:48,813
‫Em outras palavras, nós os incorporamos ao nosso tour, certo?

19
00:00:50,903 --> 00:00:52,323
‫Então, vamos fazer isso aqui agora.

20
00:00:55,430 --> 00:00:59,220
‫Portanto, os guias serão do tipo array, certo?

21
00:00:59,220 --> 00:01:01,700
‫Muito simples e, na verdade, antes de implementar qualquer

22
00:01:01,700 --> 00:01:04,080
‫código, deixe-me mostrar a você como um

23
00:01:04,080 --> 00:01:06,943
‫exemplo de como isso funcionaria ao criar um novo tour.

24
00:01:08,680 --> 00:01:11,360
‫Então, vamos voltar ao Postman

25
00:01:11,360 --> 00:01:14,523
‫aqui e criar um novo tour,

26
00:01:16,270 --> 00:01:18,330
‫ok, e aqui

27
00:01:18,330 --> 00:01:23,113
‫em nosso corpo, é claro, agora adicionaríamos os guias,

28
00:01:24,410 --> 00:01:29,400
‫aspas e, em seguida, especificaríamos uma matriz de IDs, ok?

29
00:01:29,400 --> 00:01:31,113
‫Então, vamos obter alguns IDs de usuário.

30
00:01:32,610 --> 00:01:36,070
‫Então, pegue todos os usuários, vamos ver o que temos aqui.

31
00:01:36,070 --> 00:01:38,070
‫Temos um guia aqui, na verdade,

32
00:01:38,070 --> 00:01:39,620
‫vamos pegar esse ID

33
00:01:40,460 --> 00:01:42,060
‫junto com as aspas, na

34
00:01:46,370 --> 00:01:47,893
‫verdade, vamos colocá-lo

35
00:01:49,410 --> 00:01:51,163
‫aqui e adicionar alguns outros.

36
00:01:52,900 --> 00:01:57,100
‫Então, isso aqui também e, na verdade, apenas esses dois.

37
00:01:57,100 --> 00:02:02,100
‫Isso deve ser o suficiente para testar essas coisas, ok, e então é

38
00:02:02,410 --> 00:02:04,100
‫assim que vamos criar

39
00:02:04,100 --> 00:02:07,490
‫um novo passeio com dois guias, ok, e

40
00:02:07,490 --> 00:02:10,440
‫novamente, uma vez que salvarmos este passeio,

41
00:02:10,440 --> 00:02:11,840
‫iremos então, nos

42
00:02:11,840 --> 00:02:13,472
‫bastidores, recuperar o dois

43
00:02:13,472 --> 00:02:17,270
‫documentos de usuário correspondentes a esses dois IDs, certo?

44
00:02:17,270 --> 00:02:19,263
‫Então, vamos implementar isso e,

45
00:02:20,440 --> 00:02:21,930
‫de volta ao

46
00:02:21,930 --> 00:02:23,960
‫nosso modelo, o melhor lugar para

47
00:02:23,960 --> 00:02:26,283
‫fazer isso é um middleware pré-salvo, certo?

48
00:02:27,280 --> 00:02:29,980
‫Então, isso acontecerá automaticamente nos bastidores, basicamente,

49
00:02:29,980 --> 00:02:31,550
‫cada vez que

50
00:02:31,550 --> 00:02:34,730
‫um novo tour for salvo e, na verdade,

51
00:02:34,730 --> 00:02:36,780
‫não quero fazer isso aqui.

52
00:02:37,620 --> 00:02:39,250
‫Portanto, temos a consulta, aqui, aqui

53
00:02:39,250 --> 00:02:40,920
‫está o documento "Middleware", então vamos

54
00:02:40,920 --> 00:02:42,203
‫fazer isso aqui.

55
00:02:43,320 --> 00:02:45,103
‫Então tourSchema. pré,

56
00:02:53,580 --> 00:02:57,370
‫tudo bem, vamos ligar agora mesmo aqui, para

57
00:02:57,370 --> 00:02:59,600
‫não esquecermos no final.

58
00:02:59,600 --> 00:03:04,600
‫Ok, então entendemos isso. guias como uma entrada, e lembre-se de que

59
00:03:05,220 --> 00:03:07,360
‫este será um array de todos

60
00:03:07,360 --> 00:03:10,330
‫os IDs de usuário, certo, e então faremos um loop

61
00:03:10,330 --> 00:03:13,290
‫por eles usando um. mapear, e

62
00:03:13,290 --> 00:03:15,480
‫a cada iteração obter o

63
00:03:15,480 --> 00:03:18,373
‫documento do usuário para o ID

64
00:03:19,477 --> 00:03:24,477
‫atual, certo, e vamos armazenar isso dentro de guias, certo?

65
00:03:26,460 --> 00:03:29,284
‫Então, o elemento atual, que será

66
00:03:29,284 --> 00:03:30,840
‫o ID,

67
00:03:30,840 --> 00:03:32,960
‫vamos chamá-lo de ID para

68
00:03:32,960 --> 00:03:36,360
‫facilitar o entendimento, e agora precisamos do usuário,

69
00:03:36,360 --> 00:03:38,803
‫certo, vamos prosseguir e importar isso.

70
00:03:41,630 --> 00:03:43,143
‫Então, const User,

71
00:03:45,490 --> 00:03:46,563
‫require,

72
00:03:48,000 --> 00:03:57,300
‫e está na mesma pasta aqui, certo, User.

73
00:04:01,350 --> 00:04:03,730
‫findByID com o ID atual, certo?

74
00:04:03,730 --> 00:04:05,550
‫Mas agora, tenha em

75
00:04:05,550 --> 00:04:09,977
‫mente que realmente precisamos aguardar essa promessa aqui, certo e,

76
00:04:09,977 --> 00:04:11,870
‫portanto, a função precisa

77
00:04:11,870 --> 00:04:13,513
‫ser marcada como assíncrona,

78
00:04:15,540 --> 00:04:18,313
‫mas agora temos um problema, certo,

79
00:04:18,313 --> 00:04:21,340
‫porque o. o método map

80
00:04:21,340 --> 00:04:24,550
‫atribuirá o resultado de cada iteração ao novo elemento

81
00:04:24,550 --> 00:04:27,150
‫na matriz de guias, ok, e agora

82
00:04:27,150 --> 00:04:29,100
‫temos uma função assíncrona

83
00:04:29,100 --> 00:04:31,760
‫aqui e, como você sabe, que retorna

84
00:04:31,760 --> 00:04:34,160
‫uma promessa, e agora esta matriz

85
00:04:34,160 --> 00:04:38,120
‫de guias aqui é basicamente uma série de promessas, ok.

86
00:04:38,120 --> 00:04:40,530
‫Na verdade, vamos chamar esse guia de

87
00:04:42,200 --> 00:04:44,160
‫Promessas e agora precisamos

88
00:04:44,160 --> 00:04:47,240
‫executar todas essas promessas, basicamente ao mesmo tempo.

89
00:04:47,240 --> 00:04:49,520
‫Como mostrei a você um pouco antes

90
00:04:49,520 --> 00:04:51,490
‫neste código, pelo menos se

91
00:04:51,490 --> 00:04:53,860
‫você não pulou a seção JavaScript assíncrona,

92
00:04:53,860 --> 00:04:58,860
‫tudo o que precisamos fazer é aguardar Promise. tudo e então orienta

93
00:05:01,230 --> 00:05:03,450
‫Promessa, ok, e podemos

94
00:05:04,820 --> 00:05:07,670
‫atribuir diretamente o resultado disso

95
00:05:07,670 --> 00:05:11,390
‫a isso. guias, e basicamente sobrescrever

96
00:05:11,390 --> 00:05:14,130
‫aquela matriz de IDs do templo com

97
00:05:14,130 --> 00:05:18,420
‫uma matriz de documentos do usuário, ok, e como agora

98
00:05:18,420 --> 00:05:20,000
‫estamos usando o

99
00:05:20,000 --> 00:05:23,860
‫await aqui, precisamos marcar esta função como assíncrona, ok?

100
00:05:23,860 --> 00:05:27,900
‫Salve, e acho que é isso mesmo, certo?

101
00:05:27,900 --> 00:05:31,460
‫Então, novamente, precisamos usar Promise. tudo aqui porque

102
00:05:31,460 --> 00:05:35,298
‫o resultado de tudo isso aqui é uma promessa, ok,

103
00:05:35,298 --> 00:05:38,410
‫e então este array aqui vai ser um

104
00:05:38,410 --> 00:05:40,483
‫array cheio de promessas que

105
00:05:40,483 --> 00:05:44,180
‫então executamos aguardando Promise. Tudo certo?

106
00:05:44,180 --> 00:05:46,450
‫Então, vamos realmente testar

107
00:05:46,450 --> 00:05:50,018
‫isso agora, e já temos todo esse código pronto,

108
00:05:50,018 --> 00:05:52,373
‫devemos apenas alterar esse nome aqui.

109
00:05:55,150 --> 00:05:58,560
‫Então, 'Test Tour', mas os IDs já estão aqui.

110
00:05:58,560 --> 00:06:01,760
‫Então, vamos enviar isso, e nosso nome de tour precisa ser mais

111
00:06:01,760 --> 00:06:05,167
‫longo, 'Novo tour de tarefa. - Tudo

112
00:06:06,050 --> 00:06:11,050
‫bem, mas agora vamos dar uma olhada em nossos

113
00:06:11,240 --> 00:06:15,900
‫resultados e, de fato, recebemos nossos guias aqui, certo?

114
00:06:15,900 --> 00:06:18,580
‫Então, esses são os documentos

115
00:06:18,580 --> 00:06:22,170
‫completos e, na verdade, não apenas as identificações, certo?

116
00:06:22,170 --> 00:06:24,198
‫Ótimo, então é assim que

117
00:06:24,198 --> 00:06:28,440
‫poderíamos implementar a incorporação para este exemplo de guia de turismo.

118
00:06:28,440 --> 00:06:30,840
‫Agora, esse código simples que implementamos aqui,

119
00:06:30,840 --> 00:06:33,850
‫é claro, só funciona para criar novos documentos,

120
00:06:33,850 --> 00:06:35,820
‫não para atualizá-los, certo?

121
00:06:35,820 --> 00:06:38,020
‫Portanto, agora teríamos que seguir

122
00:06:38,020 --> 00:06:42,350
‫em frente e implementar essa mesma lógica também para atualizações.

123
00:06:42,350 --> 00:06:44,540
‫No entanto, não vou fazer isso

124
00:06:44,540 --> 00:06:47,530
‫porque, lembre-se do vídeo em que modelamos nossos dados,

125
00:06:47,530 --> 00:06:49,450
‫que na verdade existem

126
00:06:49,450 --> 00:06:52,090
‫algumas desvantagens de incorporar esses dados neste caso.

127
00:06:52,090 --> 00:06:54,350
‫Por exemplo, imagine que um guia

128
00:06:54,350 --> 00:06:56,770
‫turístico atualize seu endereço de e-mail ou

129
00:06:56,770 --> 00:06:59,250
‫mude sua função de guia para guia líder.

130
00:06:59,250 --> 00:07:02,020
‫Cada vez que uma dessas mudanças acontecesse, você

131
00:07:02,020 --> 00:07:04,130
‫teria que verificar se um tour

132
00:07:04,130 --> 00:07:06,610
‫tem aquele usuário como guia e, se

133
00:07:06,610 --> 00:07:08,670
‫sim, atualize o tour também, e

134
00:07:08,670 --> 00:07:10,650
‫isso dá muito trabalho e

135
00:07:10,650 --> 00:07:11,640
‫não estamos

136
00:07:11,640 --> 00:07:13,085
‫vai nessa direção, certo?

137
00:07:13,085 --> 00:07:15,530
‫Agora, eu ainda queria mostrar como

138
00:07:15,530 --> 00:07:17,220
‫a incorporação realmente

139
00:07:17,220 --> 00:07:19,520
‫funciona e como podemos implementá-la

140
00:07:19,520 --> 00:07:22,201
‫nessa situação, porque realmente acredito que é

141
00:07:22,201 --> 00:07:24,551
‫muito importante que você ainda saiba

142
00:07:24,551 --> 00:07:26,340
‫fazer tudo caso precise

143
00:07:26,340 --> 00:07:28,590
‫em seus próprios aplicativos, ok,

144
00:07:28,590 --> 00:07:30,820
‫mas nesta situação particular iremos,

145
00:07:30,820 --> 00:07:33,810
‫em vez de incorporar, usar referência, e

146
00:07:33,810 --> 00:07:36,085
‫eu falei sobre as razões

147
00:07:36,085 --> 00:07:38,400
‫para fazer isso naquele vídeo, ok?

148
00:07:38,400 --> 00:07:40,930
‫Então, vamos prosseguir e fazer isso

149
00:07:40,930 --> 00:07:42,803
‫direito na próxima aula.

