﻿1
00:00:01,100 --> 00:00:03,700
‫Instrutor: Agora, vamos preencher as avaliações

2
00:00:03,700 --> 00:00:06,503
‫com os dados do usuário e do tour.

3
00:00:08,360 --> 00:00:11,470
‫Assim como no tour, vamos agora fazer

4
00:00:11,470 --> 00:00:14,910
‫com que tanto o tour quanto o usuário sejam

5
00:00:14,910 --> 00:00:19,330
‫preenchidos automaticamente toda vez que houver uma consulta para uma revisão.

6
00:00:19,330 --> 00:00:22,110
‫Como já fizemos isso antes,

7
00:00:22,110 --> 00:00:25,140
‫vou lhe dar mais um desafio, ok.

8
00:00:25,140 --> 00:00:27,140
‫Então, eu quero que você vá

9
00:00:27,140 --> 00:00:31,060
‫em frente e faça exatamente como fizemos nas turnês, mas agora para as revisões.

10
00:00:31,060 --> 00:00:32,850
‫Apenas uma dica que preciso

11
00:00:32,850 --> 00:00:35,140
‫dar a você antes que você possa fazer

12
00:00:35,140 --> 00:00:37,490
‫isso por conta própria, é que quando você

13
00:00:37,490 --> 00:00:40,140
‫deseja preencher dois campos, é necessário chamar populate duas vezes.

14
00:00:40,140 --> 00:00:43,430
‫Então, uma vez para cada um dos campos, tudo bem.

15
00:00:43,430 --> 00:00:45,740
‫Com essas informações, você deve estar

16
00:00:45,740 --> 00:00:48,763
‫pronto para pausar o vídeo agora e tentar.

17
00:00:52,780 --> 00:00:55,023
‫Espero que não tenha sido muito difícil.

18
00:00:56,070 --> 00:00:59,583
‫Vamos fechar alguns arquivos aqui, então tudo

19
00:01:00,850 --> 00:01:04,320
‫que não é relacionado a revisões, não

20
00:01:04,320 --> 00:01:05,603
‫precisamos mais.

21
00:01:06,740 --> 00:01:10,440
‫Então, vamos apenas para o modelo de revisão e, em

22
00:01:10,440 --> 00:01:12,823
‫seguida, implementar ou pré-localizar o middleware.

23
00:01:14,900 --> 00:01:18,120
‫Então, fazemos isso no esquema, como você

24
00:01:18,120 --> 00:01:21,870
‫já sabe, e então, novamente, usamos uma expressão regular

25
00:01:21,870 --> 00:01:25,883
‫para fazer a correspondência de strings, que começam com find.

26
00:01:27,170 --> 00:01:30,100
‫Então, novamente, isso vai funcionar para localizar, para

27
00:01:30,100 --> 00:01:34,160
‫localizar um e todos os outros métodos de localização de um que

28
00:01:34,160 --> 00:01:35,710
‫estão disponíveis no Mongoose.

29
00:01:40,960 --> 00:01:44,340
‫Como sempre, começo escrevendo a seguir.

30
00:01:44,340 --> 00:01:46,180
‫E agora, na verdade, tudo o que

31
00:01:46,180 --> 00:01:51,123
‫precisamos fazer é chamar populate na consulta atual, então isso. preencher, e agora irei realmente

32
00:01:53,200 --> 00:01:56,460
‫especificar o objeto de opções porque desejo apenas

33
00:01:56,460 --> 00:01:59,550
‫selecionar alguns campos e não todo o

34
00:01:59,550 --> 00:02:02,573
‫passeio, e também não o usuário inteiro.

35
00:02:03,790 --> 00:02:07,540
‫Portanto, lembre-se, começamos com a propriedade path, e

36
00:02:07,540 --> 00:02:10,053
‫esta será para um tour.

37
00:02:11,140 --> 00:02:15,280
‫Então, novamente, ao especificar tour aqui, significa que este campo aqui,

38
00:02:15,280 --> 00:02:17,750
‫que tem exatamente o mesmo nome,

39
00:02:17,750 --> 00:02:20,230
‫será aquele preenchido com base em um

40
00:02:20,230 --> 00:02:21,860
‫modelo de tour.

41
00:02:21,860 --> 00:02:25,580
‫Bem, porque isso é o que especificamos aqui, ok.

42
00:02:25,580 --> 00:02:28,530
‫Portanto, a referência é a um modelo

43
00:02:28,530 --> 00:02:31,680
‫chamado tour e, basicamente, é nessa coleção onde

44
00:02:31,680 --> 00:02:35,533
‫o Mongoose vai procurar documentos com o ID que especificamos.

45
00:02:36,640 --> 00:02:41,290
‫Tudo bem, então queremos uma turnê, mas então vamos dizer que na

46
00:02:42,360 --> 00:02:45,070
‫verdade queremos apenas o nome da turnê

47
00:02:45,070 --> 00:02:46,823
‫e nada mais.

48
00:02:47,830 --> 00:02:52,140
‫Então selecione, ok, e então apenas o nome e, como eu

49
00:02:52,140 --> 00:02:55,680
‫disse, se quisermos preencher vários campos, tudo o que

50
00:02:55,680 --> 00:02:58,453
‫precisamos fazer é chamar populate novamente.

51
00:03:00,370 --> 00:03:03,950
‫Portanto, neste ponto, a consulta é preenchida com os passeios e

52
00:03:03,950 --> 00:03:05,650
‫agora precisamos preenchê-la novamente, desta

53
00:03:05,650 --> 00:03:07,123
‫vez com o usuário.

54
00:03:13,130 --> 00:03:15,110
‫E agora selecione, e

55
00:03:15,110 --> 00:03:19,690
‫isso realmente exibirá apenas o nome do usuário e a foto, e

56
00:03:19,690 --> 00:03:22,510
‫não, por exemplo, coisas como o e-mail.

57
00:03:22,510 --> 00:03:23,800
‫Então, digamos que

58
00:03:23,800 --> 00:03:26,140
‫alguém acesse a API para obter todos

59
00:03:26,140 --> 00:03:28,720
‫os comentários, mas não queremos vazar todos os

60
00:03:28,720 --> 00:03:32,200
‫detalhes sobre os usuários que publicam esses comentários para o cliente.

61
00:03:32,200 --> 00:03:35,550
‫Portanto, ninguém deveria realmente ser capaz de saber

62
00:03:35,550 --> 00:03:39,310
‫os dados privados sobre os revisores, como e-mails, ok.

63
00:03:39,310 --> 00:03:44,060
‫Então, novamente, nós apenas vazamos, apenas enviamos dados relevantes sobre o usuário,

64
00:03:44,060 --> 00:03:48,720
‫e neste caso, é o nome e a foto, ok.

65
00:03:48,720 --> 00:03:51,920
‫Portanto, salve isso e, se agora atingirmos ou obtivermos

66
00:03:51,920 --> 00:03:54,360
‫todos os endpoint de avaliações, o tour

67
00:03:54,360 --> 00:03:58,070
‫e o usuário já devem estar preenchidos, em vez de

68
00:03:58,070 --> 00:04:00,323
‫apenas vermos os IDs lá.

69
00:04:01,320 --> 00:04:04,240
‫Vamos tentar isso e vamos lá.

70
00:04:04,240 --> 00:04:07,260
‫Então está funcionando, obtemos o nome

71
00:04:07,260 --> 00:04:11,890
‫e, claro, também o ID, e o mesmo para o usuário.

72
00:04:11,890 --> 00:04:14,783
‫Então, pegamos o nome, mas não a foto.

73
00:04:15,780 --> 00:04:19,170
‫Então vamos ver, talvez eu não tenha especificado a propriedade

74
00:04:19,170 --> 00:04:22,160
‫da foto, então vamos dar uma olhada nisso.

75
00:04:22,160 --> 00:04:26,190
‫Portanto, o userModel, mas na verdade ele está lá.

76
00:04:26,190 --> 00:04:29,900
‫Não, desculpe, é claro que não vemos a foto porque

77
00:04:29,900 --> 00:04:33,463
‫nunca especificamos nenhuma foto para nenhum de nossos usuários.

78
00:04:34,470 --> 00:04:38,230
‫Ok, portanto, a única propriedade que realmente existe é

79
00:04:38,230 --> 00:04:41,550
‫o nome, e é isso que obtemos.

80
00:04:41,550 --> 00:04:44,520
‫Ok, e é isso mesmo.

81
00:04:44,520 --> 00:04:47,550
‫Tão muito simples, isso é tudo o que precisamos fazer

82
00:04:47,550 --> 00:04:49,020
‫para obter todos os

83
00:04:49,020 --> 00:04:52,280
‫dados relacionados e exatamente como especificamos em nosso modelo de dados.

84
00:04:52,280 --> 00:04:53,900
‫Agora, novamente, apenas

85
00:04:53,900 --> 00:04:56,690
‫tenha em mente que este vai adicionar

86
00:04:56,690 --> 00:04:59,110
‫algumas consultas extras e, neste caso,

87
00:04:59,110 --> 00:05:01,410
‫são na verdade duas consultas, porque

88
00:05:01,410 --> 00:05:05,200
‫nos bastidores, o Mongoose terá que consultar os passeios e

89
00:05:05,200 --> 00:05:08,690
‫também os usuários para encontrar o documento correspondente, ok.

90
00:05:08,690 --> 00:05:09,670
‫Portanto, isso

91
00:05:09,670 --> 00:05:12,230
‫provavelmente deve adicionar algum tempo aqui à consulta.

92
00:05:12,230 --> 00:05:16,340
‫Portanto, demorou 266 milissegundos, assim.

93
00:05:16,340 --> 00:05:19,700
‫Vamos apenas, para fins de experiência, comentar

94
00:05:19,700 --> 00:05:22,593
‫este código e tentar novamente.

95
00:05:24,800 --> 00:05:28,340
‫E isso está demorando muito, não sei por quê.

96
00:05:28,340 --> 00:05:32,423
‫Então, vamos fazer de novo, e você vê, 157 milissegundos,

97
00:05:33,280 --> 00:05:37,033
‫e se colocarmos de volta, vamos fazer de novo.

98
00:05:39,080 --> 00:05:40,560
‫E, de novo, leva muito

99
00:05:40,560 --> 00:05:42,750
‫tempo e, de novo, estou fazendo isso duas vezes.

100
00:05:42,750 --> 00:05:45,900
‫Mas ainda assim você vê que demorou um pouco mais, ok.

101
00:05:45,900 --> 00:05:47,570
‫Portanto, não o fim

102
00:05:47,570 --> 00:05:50,450
‫do mundo, foram cerca de 100 milissegundos a mais,

103
00:05:50,450 --> 00:05:52,330
‫mas quando você atinge uma certa

104
00:05:52,330 --> 00:05:54,410
‫escala, isso pode fazer a diferença.

105
00:05:54,410 --> 00:05:57,580
‫Então, novamente, eu só quero que você mantenha isso em mente.

106
00:05:57,580 --> 00:06:01,113
‫De qualquer forma, é isso para esta palestra, então vamos agora seguir em frente.

