1
00:00:03,910 --> 00:00:09,095
Пришло время приступить к четвертому и окончательному заданию этого курса.

2
00:00:09,095 --> 00:00:12,170
Я разработал это задание, чтобы консолидировать

3
00:00:12,170 --> 00:00:15,610
все, что вы узнали в этом курсе.

4
00:00:15,610 --> 00:00:21,990
Таким образом, это назначение будет включать маршрутизацию с использованием экспресс-маршрутизатора.

5
00:00:21,990 --> 00:00:26,340
Это будет включать в себя дизайн схем в модели,

6
00:00:26,340 --> 00:00:29,420
для наших MongoDB и Mongoose,

7
00:00:29,420 --> 00:00:33,531
а затем он будет кратко смотреть на аутентификацию пользователя.

8
00:00:33,531 --> 00:00:36,420
Что именно мы делаем в этом задании?

9
00:00:36,420 --> 00:00:41,600
Это назначение основано на возможности для пользователя

10
00:00:41,600 --> 00:00:49,510
сохранять и извлекать список блюд в качестве их любимых блюд на стороне сервера.

11
00:00:49,510 --> 00:00:53,105
Если вы проходили предыдущие курсы этой специализации,

12
00:00:53,105 --> 00:00:58,275
в частности курсы разработки гибридных мобильных приложений,

13
00:00:58,275 --> 00:01:00,675
будь то ионный или родной сценарий,

14
00:01:00,675 --> 00:01:06,720
вы видели, что мы разработали приложения, чтобы иметь возможность позволить пользователю

15
00:01:06,720 --> 00:01:10,355
сохранять блюда в списке их любимых блюда,

16
00:01:10,355 --> 00:01:14,480
а также получить блюда из этого списка их любимых блюд.

17
00:01:14,480 --> 00:01:17,840
Когда мы реализовали это в предыдущих курсах,

18
00:01:17,840 --> 00:01:24,085
мы реализовали это, используя локальное хранилище на конкретном устройстве.

19
00:01:24,085 --> 00:01:26,330
В этом назначении вы будете расширять

20
00:01:26,330 --> 00:01:30,308
серверную сторону, чтобы иметь возможность поддерживать именно это.

21
00:01:30,308 --> 00:01:34,940
Таким образом, пользователь может сохранить свой список любимых блюд на

22
00:01:34,940 --> 00:01:37,805
стороне сервера и получить доступ к этому списку с

23
00:01:37,805 --> 00:01:41,950
любого устройства, с которого он будет входить на свой сервер.

24
00:01:41,950 --> 00:01:49,140
Это означает, что нам нужно разработать новый маршрут для нашего сервера,

25
00:01:49,140 --> 00:01:52,615
который мы будем называть маршрутом/избранным.

26
00:01:52,615 --> 00:01:59,314
На этом маршруте нам придется разработать экспресс-маршрутизатор для поддержки

27
00:01:59,314 --> 00:02:03,515
операций получения, отправки и удаления на этом маршруте, а

28
00:02:03,515 --> 00:02:08,495
также разработать схему для хранения любимых блюд

29
00:02:08,495 --> 00:02:13,343
и соответствующей модели Mongoose и

30
00:02:13,343 --> 00:02:19,820
соединить их вместе, чтобы информация могла быть сохранена и извлечен из MongoDB.

31
00:02:19,820 --> 00:02:27,590
Мы также будем использовать популяцию Mongoose для того, чтобы извлечь информацию из

32
00:02:27,590 --> 00:02:32,000
модели пользователя и из модели блюд, когда мы

33
00:02:32,000 --> 00:02:37,105
составим этот список любимых блюд для нашего пользователя.

34
00:02:37,105 --> 00:02:41,355
Информация о любимых блюдах, которую вы храните,

35
00:02:41,355 --> 00:02:46,355
на самом деле не содержит ни информации о пользователе, ни информации о блюде.

36
00:02:46,355 --> 00:02:53,000
Вместо этого он будет содержать указатели на документы для документа блюдо и для

37
00:02:53,000 --> 00:02:56,660
документа пользователя, а затем мы будем публиковать эту информацию,

38
00:02:56,660 --> 00:03:03,155
когда мы отправляем обратно эту информацию в ответ на запрос получить.

39
00:03:03,155 --> 00:03:05,495
Давайте посмотрим, как мы реализуем

40
00:03:05,495 --> 00:03:13,135
это окончательное задание, а также различные задачи в этом окончательном задании.

41
00:03:13,135 --> 00:03:17,370
Чтобы помочь вам понять, что требуется в

42
00:03:17,370 --> 00:03:21,330
окончательном назначении или что вы будете реализовывать в окончательном назначении,

43
00:03:21,330 --> 00:03:26,835
позвольте мне продемонстрировать, что ваш сервер должен делать в конце этого задания,

44
00:03:26,835 --> 00:03:31,540
а затем я перечислю три задачи, которые вам нужно выполнить в этом назначение.

45
00:03:31,540 --> 00:03:35,460
Чтобы начать работу, нам нужен набор блюд уже

46
00:03:35,460 --> 00:03:40,250
на стороне сервера, чтобы пользователь мог пометить некоторые из них как их любимые блюда.

47
00:03:40,250 --> 00:03:47,805
Я пошел вперед и добавил четыре блюда в мой список блюд на стороне сервера.

48
00:03:47,805 --> 00:03:50,065
Ты уже знаешь, как это сделать.

49
00:03:50,065 --> 00:03:52,725
Вы должны войти в систему как администратор, а затем

50
00:03:52,725 --> 00:03:56,670
опубликовать эту информацию на стороне сервера один за другим.

51
00:03:56,670 --> 00:04:01,590
Чтобы вы могли получить информацию для каждого из этих блюд,

52
00:04:01,590 --> 00:04:05,405
я уже предоставил вам файл db.json, который содержит

53
00:04:05,405 --> 00:04:11,400
документы JSON, соответствующие каждой из этих блюд в ресурсах назначения.

54
00:04:11,400 --> 00:04:14,670
Вы можете открыть это, вырезать и вставить информацию оттуда, а затем

55
00:04:14,670 --> 00:04:19,576
создать список блюд на стороне сервера.

56
00:04:19,576 --> 00:04:22,980
Здесь вы увидите, что я уже выполнил операцию get на

57
00:04:22,980 --> 00:04:26,940
локальном хосте: 3000/блюда, а затем вы

58
00:04:26,940 --> 00:04:31,140
видите, что я уже получил список блюд здесь.

59
00:04:31,140 --> 00:04:38,570
Для нас важно отметить, что каждое блюдо будет иметь свой собственный идентификатор блюда здесь.

60
00:04:38,570 --> 00:04:42,384
Когда вам нужно пометить любое блюдо как любимое,

61
00:04:42,384 --> 00:04:46,470
вам нужен доступ к идентификатору блюда для каждого из этих блюд.

62
00:04:46,470 --> 00:04:51,030
Вы можете скопировать эти четыре идентификатора блюд, а затем сохранить их так, что при

63
00:04:51,030 --> 00:04:56,094
выполнении операций по добавлению этих блюд в список блюд,

64
00:04:56,094 --> 00:05:00,085
то вы сможете использовать этот идентификатор блюда.

65
00:05:00,085 --> 00:05:02,730
Поэтому я собираюсь скопировать эти четыре идентификатора посуды, а затем сохранить

66
00:05:02,730 --> 00:05:05,820
их в текстовом документе, чтобы я мог использовать их.

67
00:05:05,820 --> 00:05:09,325
Прежде чем я смогу добавить блюда в свой список блюд,

68
00:05:09,325 --> 00:05:12,347
мне, очевидно, нужно войти в систему как пользователь.

69
00:05:12,347 --> 00:05:16,370
Позвольте мне идти вперед и войти в систему как один из пользователей.

70
00:05:16,370 --> 00:05:25,245
Для этого позвольте мне сделать сообщение на локальном хосте: 3000/пользователей/логин.

71
00:05:25,245 --> 00:05:28,530
И в теле сообщения

72
00:05:28,530 --> 00:05:35,940
позвольте мне ввести одного из зарегистрированных пользователей.

73
00:05:35,940 --> 00:05:42,375
Я не хочу входить в систему как администратор, но как один из других обычных пользователей.

74
00:05:42,375 --> 00:05:47,442
Поэтому позвольте мне сделать этот пост на https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Теперь все эти операции,

76
00:05:48,890 --> 00:05:55,200
это лучше сделать на конечной точке HTTPS, а не на конечной точке HTTP.

77
00:05:55,200 --> 00:06:01,920
Мы сделаем сообщение на эту конечную точку и войдем в наш сервис,

78
00:06:01,920 --> 00:06:05,920
и в ответ вы должны иметь возможность получить веб-токен JSON.

79
00:06:05,920 --> 00:06:11,190
Итак, давайте сделаем копию этого JSON веб-токена, потому что нам понадобится это для

80
00:06:11,190 --> 00:06:16,905
выполнения любой из операций по добавлению блюд в наш список избранных.

81
00:06:16,905 --> 00:06:22,628
Позвольте мне скопировать этот токен и сохранить его в моем текстовом документе.

82
00:06:22,628 --> 00:06:27,935
Теперь, как добавить блюдо в список избранного?

83
00:06:27,935 --> 00:06:33,450
Для этого первым шагом является то, что мы должны

84
00:06:33,450 --> 00:06:40,355
получить доступ к конечной точке /favorites.

85
00:06:40,355 --> 00:06:45,435
Если вы хотите добавить конкретное блюдо в список избранного,

86
00:06:45,435 --> 00:06:52,605
мы просто скажем /избранное, а затем добавим идентификатор блюда в URL-адрес здесь.

87
00:06:52,605 --> 00:06:57,970
Позвольте мне вставить идентификатор блюда, который я хочу добавить в свой список избранного.

88
00:06:57,970 --> 00:07:03,130
Здесь я вставил в свой идентификатор блюда в список избранного.

89
00:07:03,130 --> 00:07:08,025
Тело этого сообщения хоста

90
00:07:08,025 --> 00:07:13,590
не будет содержать ничего, потому что все, что мне нужно, уже находится в URL-адресе.

91
00:07:13,590 --> 00:07:16,043
И для заголовка

92
00:07:16,043 --> 00:07:18,984
мне нужно настроить заголовок авторизации,

93
00:07:18,984 --> 00:07:21,371
а в заголовке авторизации

94
00:07:21,371 --> 00:07:24,380
мне нужен токен.

95
00:07:24,380 --> 00:07:29,487
Поэтому позвольте мне скопировать токен здесь, а затем в заголовке авторизации,

96
00:07:29,487 --> 00:07:34,750
скажем на носителя, и вставить в заголовок авторизации.

97
00:07:34,750 --> 00:07:39,853
Вы также можете сделать то же самое, чтобы получить токен.

98
00:07:39,853 --> 00:07:46,925
Вы также можете выполнить вход через Facebook, а затем получить веб-токен JSON.

99
00:07:46,925 --> 00:07:50,960
Я проиллюстрировал, чтобы получить веб-токен JSON, используя

100
00:07:50,960 --> 00:07:55,655
стандартную локальную аутентификацию с использованием имени пользователя и пароля,

101
00:07:55,655 --> 00:07:58,940
но неважно, каким образом вы получили веб-токен JSON.

102
00:07:58,940 --> 00:08:01,160
Пока у вас есть веб-токен JSON,

103
00:08:01,160 --> 00:08:04,376
вы должны иметь возможность выполнять все эти операции.

104
00:08:04,376 --> 00:08:10,280
Позвольте мне выполнить пост-операцию на этой конечной точке и помнить, что

105
00:08:10,280 --> 00:08:16,570
это идентификатор блюда для конкретного блюда, которое я хочу добавить в свой список избранного.

106
00:08:16,570 --> 00:08:19,895
Когда я отправляю сообщение в список избранного,

107
00:08:19,895 --> 00:08:29,135
вы увидите, что мой сервер ответит обратно с этим документом здесь, в теле ответа.

108
00:08:29,135 --> 00:08:33,328
Теперь давайте рассмотрим этот документ, чтобы узнать, что именно он содержит.

109
00:08:33,328 --> 00:08:36,680
Этот документ, как вы можете видеть, содержит идентификатор,

110
00:08:36,680 --> 00:08:39,511
но, очевидно, потому что это документ JSON,

111
00:08:39,511 --> 00:08:43,115
кроме того, он содержит

112
00:08:43,115 --> 00:08:46,335
поле, называемое пользователем.

113
00:08:46,335 --> 00:08:48,425
Что теперь хранит это пользовательское поле?

114
00:08:48,425 --> 00:08:53,848
Это поле пользователя является идентификатором объекта пользователя

115
00:08:53,848 --> 00:09:00,620
, которому соответствует данный конкретный список избранного.

116
00:09:00,620 --> 00:09:02,960
И посмотри на посуду.

117
00:09:02,960 --> 00:09:10,120
Блюда представляют собой массив и это массив идентификаторов блюд.

118
00:09:10,120 --> 00:09:15,950
И в этом случае, я только что добавил первое блюдо в свой список избранного.

119
00:09:15,950 --> 00:09:22,690
Вот почему у меня есть только одно блюдо в ассортименте блюд в моем списке фаворитов.

120
00:09:22,690 --> 00:09:30,140
Таким образом, это должно немедленно предложить вам, как спроектировать схему для ваших избранных.

121
00:09:30,140 --> 00:09:34,760
Таким образом, блюда содержат идентификаторы объектов каждой из блюд,

122
00:09:34,760 --> 00:09:39,124
а пользователь содержит идентификатор объекта, соответствующий пользователю.

123
00:09:39,124 --> 00:09:42,335
Вы уже видели, как я использую

124
00:09:42,335 --> 00:09:49,800
информацию для заполнения информации, когда я делаю операцию get.

125
00:09:49,800 --> 00:09:52,690
Мы уже сделали это с комментариями.

126
00:09:52,690 --> 00:09:57,980
Таким образом, это должно дать вам большой намек на то, как вы будете разрабатывать схему, которая содержит

127
00:09:57,980 --> 00:10:04,855
пользователя и массив блюд в моем списке блюд здесь.

128
00:10:04,855 --> 00:10:07,330
Теперь, мы сделали сообщение об этом.

129
00:10:07,330 --> 00:10:09,500
Давайте получим список фаворитов.

130
00:10:09,500 --> 00:10:11,750
Поэтому, чтобы получить список избранного,

131
00:10:11,750 --> 00:10:14,405
мне нужно выполнить операцию get.

132
00:10:14,405 --> 00:10:16,561
Теперь, для операции get,

133
00:10:16,561 --> 00:10:21,950
мне, очевидно, нужно также иметь информацию об авторизации здесь, потому что

134
00:10:21,950 --> 00:10:27,635
вы хотите, чтобы пользователь мог получать только свой список избранного,

135
00:10:27,635 --> 00:10:32,905
и ни один другой пользователь не может получить список избранного для другого пользователя.

136
00:10:32,905 --> 00:10:34,590
Так что, это очень важно.

137
00:10:34,590 --> 00:10:37,640
Таким образом, это говорит о том, что вам нужно

138
00:10:37,640 --> 00:10:41,620
проверить подлинность пользователя даже для операции get.

139
00:10:41,620 --> 00:10:45,185
Теперь, как пост-операция

140
00:10:45,185 --> 00:10:49,760
автоматически получает этот идентификатор объекта, соответствующий пользователю?

141
00:10:49,760 --> 00:10:55,175
Напомним, что когда вы включаете заголовок авторизации здесь,

142
00:10:55,175 --> 00:10:57,457
из заголовка авторизации,

143
00:10:57,457 --> 00:11:01,055
кстати, вы выполняете авторизацию пользователя,

144
00:11:01,055 --> 00:11:06,240
направляйте эти пользовательские свойства, уже загруженные на объект запроса.

145
00:11:06,240 --> 00:11:10,270
И вот где вы получите доступ к идентификатору объекта пользователя.

146
00:11:10,270 --> 00:11:13,914
Итак, еще один намек на то, как вы будете заполнять эту информацию.

147
00:11:13,914 --> 00:11:16,655
Поэтому обратите внимание, что, когда я выполнял сообщение,

148
00:11:16,655 --> 00:11:19,625
я никогда не указывал пользователя, потому что

149
00:11:19,625 --> 00:11:23,825
информация пользователя должна автоматически быть

150
00:11:23,825 --> 00:11:28,484
получена из того, что мы предоставили здесь в заголовке авторизации.

151
00:11:28,484 --> 00:11:32,565
Итак, еще один намек на то, как вы будете осуществлять это.

152
00:11:32,565 --> 00:11:36,830
Вот почему я сказал, что это задание является

153
00:11:36,830 --> 00:11:41,835
консолидацией всех тем, которые вы изучили в этом курсе.

154
00:11:41,835 --> 00:11:47,200
Теперь я не поддерживаю операцию get для определенного идентификатора тарелки.

155
00:11:47,200 --> 00:11:50,610
Это не имеет смысла поддерживать это в избранном,

156
00:11:50,610 --> 00:11:53,345
в конкретном идентификаторе блюда.

157
00:11:53,345 --> 00:11:58,595
Вместо этого мы можем выполнить операцию get на локальном хосте 3443/избранное.

158
00:11:58,595 --> 00:12:01,670
А затем мы выполняем операцию get.

159
00:12:01,670 --> 00:12:09,398
Вы сразу заметите, что возвращаемый документ содержит

160
00:12:09,398 --> 00:12:17,715
информацию о пользователе, уже заполненную операцией получения здесь.

161
00:12:17,715 --> 00:12:18,950
Итак, информация пользователя.

162
00:12:18,950 --> 00:12:22,112
Таким образом, вместо

163
00:12:22,112 --> 00:12:26,445
идентификатора пользователя там информация пользователя уже присутствует там.

164
00:12:26,445 --> 00:12:28,730
Это делается через население Монго.

165
00:12:28,730 --> 00:12:34,435
Итак, это еще один большой намек на то, как вы должны реализовать операцию get.

166
00:12:34,435 --> 00:12:37,130
Заполняется не только информация пользователя.

167
00:12:37,130 --> 00:12:39,626
Теперь почему я хочу, чтобы информация пользователя была заполнена?

168
00:12:39,626 --> 00:12:44,540
Потому что это может быть полезно, когда я отображаю информацию.

169
00:12:44,540 --> 00:12:46,350
Это может быть не нужно,

170
00:12:46,350 --> 00:12:49,445
но я просто делаю это ради полноты,

171
00:12:49,445 --> 00:12:53,825
потому что если вы извлекаете список избранного для конкретного пользователя,

172
00:12:53,825 --> 00:12:56,120
вы автоматически знаете, кто такой пользователь,

173
00:12:56,120 --> 00:12:59,083
и этот конкретный пользователь все равно входит в систему.

174
00:12:59,083 --> 00:13:01,385
Но в случае, если вам нужна информация пользователя,

175
00:13:01,385 --> 00:13:06,278
вы можете выполнить эту операцию, чтобы получить информацию этого пользователя.

176
00:13:06,278 --> 00:13:10,720
Итак, просто чтобы проиллюстрировать вам, что население Монго может быть использовано,

177
00:13:10,720 --> 00:13:16,515
я проиллюстрировал не только то, что в списке блюд здесь

178
00:13:16,515 --> 00:13:22,820
информация о каждом блюде уже заполнена в этом массиве.

179
00:13:22,820 --> 00:13:24,907
Итак, если у вас есть куча блюд,

180
00:13:24,907 --> 00:13:30,385
информация о каждом из этих блюд должна быть заполнена в этом массиве.

181
00:13:30,385 --> 00:13:34,670
Таким образом, это еще одно использование населения Монго

182
00:13:34,670 --> 00:13:38,555
, что вы видите, чтобы заполнить информацию о блюдах.

183
00:13:38,555 --> 00:13:44,014
Просто, кстати, вы настроили схему для ваших избранных,

184
00:13:44,014 --> 00:13:47,840
это должно быть автоматически возможно для вас, используя

185
00:13:47,840 --> 00:13:52,010
только точку заполнения в списке блюд здесь.

186
00:13:52,010 --> 00:13:54,103
Итак, это вторая часть.

187
00:13:54,103 --> 00:13:59,213
Теперь, когда мы можем получить метод получения блюд,

188
00:13:59,213 --> 00:14:03,590
позвольте мне показать вам, как вы можете выполнить послеоперационную операцию, где вы можете

189
00:14:03,590 --> 00:14:08,750
добавить кучу блюд в свой список избранного.

190
00:14:08,750 --> 00:14:11,145
Теперь, возвращаясь к этому сообщению,

191
00:14:11,145 --> 00:14:18,145
если вам нужно добавить не только один, но и набор блюд в свой список фаворитов,

192
00:14:18,145 --> 00:14:19,850
почему вы хотите этого?

193
00:14:19,850 --> 00:14:24,980
Может быть, на стороне клиента у вас может быть кнопка, которая при

194
00:14:24,980 --> 00:14:31,255
нажатии позволит вам отметить набор блюд из списка блюд,

195
00:14:31,255 --> 00:14:34,710
а затем добавить их одним выстрелом в ваш список избранного.

196
00:14:34,710 --> 00:14:37,390
Таким образом, чтобы поддержать такую операцию,

197
00:14:37,390 --> 00:14:42,295
вы можете разрешить выполнение сообщения на слэш избранное здесь.

198
00:14:42,295 --> 00:14:45,641
Теперь, когда сообщение выполняется на слэш избранное, опять же,

199
00:14:45,641 --> 00:14:48,959
вам все равно понадобится заголовок авторизации.

200
00:14:48,959 --> 00:14:51,460
Но в теле сообщения,

201
00:14:51,460 --> 00:14:57,493
мы будем хранить список блюд в виде массива этого формата.

202
00:14:57,493 --> 00:15:01,490
Итак, это документ JSON здесь,

203
00:15:01,490 --> 00:15:04,340
поэтому позвольте мне убедиться, что в моем заголовке

204
00:15:04,340 --> 00:15:08,107
тип содержимого уже присутствует там.

205
00:15:08,107 --> 00:15:14,545
Теперь этот документ будет

206
00:15:14,545 --> 00:15:18,735
содержать массив блюд вроде этого.

207
00:15:18,735 --> 00:15:22,700
Таким образом, каждое блюдо будет идентифицировано,

208
00:15:22,700 --> 00:15:29,860
сказав подчеркивание ID двоеточия,

209
00:15:29,860 --> 00:15:34,835
а затем здесь они будут иметь идентификатор блюда,

210
00:15:34,835 --> 00:15:39,760
и поэтому это будет не что иное, как массив блюд.

211
00:15:39,760 --> 00:15:46,630
Итак, позвольте мне добавить два блюда в мой список избранного здесь, чтобы проиллюстрировать суть.

212
00:15:46,630 --> 00:15:51,726
Итак, позвольте мне вставить в это идентификаторы из парочки блюд.

213
00:15:51,726 --> 00:15:56,823
Итак, когда вы выполняете сообщение на локальном хосте 3443/избранное,

214
00:15:56,823 --> 00:16:02,295
вот как вы составляете тело сообщения здесь.

215
00:16:02,295 --> 00:16:07,497
Таким образом, каждое блюдо, которое вы хотите добавить, будет включено в этот формат здесь.

216
00:16:07,497 --> 00:16:09,670
Теперь, когда вы включаете их в этот формат,

217
00:16:09,670 --> 00:16:12,425
а затем отправляете

218
00:16:12,425 --> 00:16:20,161
на эту сторону сервера, сервер взамен отправит вам обновленный список избранного.

219
00:16:20,161 --> 00:16:23,395
Итак, когда вы получите обновленный список избранного со стороны сервера,

220
00:16:23,395 --> 00:16:26,300
вы увидите, что информация пользователя уже есть,

221
00:16:26,300 --> 00:16:34,685
но обратите внимание, как любимые блюда хранятся в этом массиве идентификаторов объекта блюда.

222
00:16:34,685 --> 00:16:38,320
Итак, первый, который мы уже добавили в предыдущей операции.

223
00:16:38,320 --> 00:16:39,485
Итак, остальные два

224
00:16:39,485 --> 00:16:43,990
мы только что добавили в список наших избранных.

225
00:16:43,990 --> 00:16:47,545
Таким образом, эти два идентификатора объектов также добавляются в

226
00:16:47,545 --> 00:16:53,110
мой массив блюд в моем документе «Избранное» здесь.

227
00:16:53,110 --> 00:16:56,050
Так вот, ты идешь. Итак, вот как вы должны выполнять

228
00:16:56,050 --> 00:17:02,763
сообщение избранного на конечной точке, как это.

229
00:17:02,763 --> 00:17:05,340
Теперь давайте снова выполним операцию get

230
00:17:05,340 --> 00:17:10,160
на избранном, чтобы увидеть, какие функции get операции для нас.

231
00:17:10,160 --> 00:17:12,600
Поэтому, когда мы выполняем операцию GET,

232
00:17:12,600 --> 00:17:21,345
вы сразу заметите, что в возврате избранного документа

233
00:17:21,345 --> 00:17:23,640
у вас есть информация пользователя там,

234
00:17:23,640 --> 00:17:25,065
а затем ниже здесь,

235
00:17:25,065 --> 00:17:29,820
блюда - это не что иное, как массив документов Json здесь,

236
00:17:29,820 --> 00:17:32,670
каждый из которых соответствует блюду.

237
00:17:32,670 --> 00:17:35,010
Теперь об этом автоматически заботится

238
00:17:35,010 --> 00:17:38,360
заполнение мангуста, которое мы сделали на стороне сервера.

239
00:17:38,360 --> 00:17:44,525
Таким образом, вся эта информация должна быть автоматически заполнена на стороне сервера.

240
00:17:44,525 --> 00:17:50,430
Так вот, как работают ваши почтовые операции на двух конечных точках.

241
00:17:50,430 --> 00:17:56,395
Теперь позвольте мне показать вам, как вы будете выполнять операцию DELETE.

242
00:17:56,395 --> 00:18:00,735
Теперь удалить конкретное блюдо.

243
00:18:00,735 --> 00:18:08,193
Поэтому позвольте мне выполнить операцию удаления на конкретной конечной точке.

244
00:18:08,193 --> 00:18:13,095
Итак, мы вернемся к этой конечной точке,

245
00:18:13,095 --> 00:18:16,470
а потом позволь мне скопировать одну из них,

246
00:18:16,470 --> 00:18:18,985
а потом я удалю одну из тарелок.

247
00:18:18,985 --> 00:18:22,585
Так что для выполнения операции удаления одной из тарелок,

248
00:18:22,585 --> 00:18:23,750
конечно, как вы видите,

249
00:18:23,750 --> 00:18:26,453
нам еще не нужно тело,

250
00:18:26,453 --> 00:18:29,485
и нам не нужно содержание здесь.

251
00:18:29,485 --> 00:18:35,580
Все, что нам нужно сделать, это выполнить операцию удаления на этой конечной точке.

252
00:18:35,580 --> 00:18:43,125
Итак, здесь вы видите, что я делаю localhost: 3443/favorites/, а затем идентификатор блюда.

253
00:18:43,125 --> 00:18:46,231
А потом позвольте мне опубликовать это.

254
00:18:46,231 --> 00:18:51,760
Поэтому, когда я удаляю конкретное блюдо из моего списка избранного,

255
00:18:51,760 --> 00:18:53,695
вы сразу замечаете, что

256
00:18:53,695 --> 00:19:01,555
мой обновленный список избранного отправляется обратно на клиентскую сторону сервером.

257
00:19:01,555 --> 00:19:03,010
Итак, у вас есть пользователь здесь,

258
00:19:03,010 --> 00:19:06,220
но обратите внимание, что в массиве блюд у меня теперь только два блюда.

259
00:19:06,220 --> 00:19:11,105
Тот, который я только что удалил, ушёл из этого списка блюд.

260
00:19:11,105 --> 00:19:12,820
Поэтому, если вы выполняете GET сейчас,

261
00:19:12,820 --> 00:19:18,265
ваш массив блюд будет постоянно к блюдам там.

262
00:19:18,265 --> 00:19:24,635
Теперь предположим, что я выполняю DELETE в избранном здесь.

263
00:19:24,635 --> 00:19:30,565
Поэтому, если я выполняю DELETE непосредственно на конечной точке избранного,

264
00:19:30,565 --> 00:19:34,540
то то что он собирается сделать, это удалить все мои избранные, а

265
00:19:34,540 --> 00:19:39,096
также полностью удалить мой документ избранного со стороны сервера.

266
00:19:39,096 --> 00:19:42,250
Поэтому позвольте мне выполнить эту операцию удаления на стороне сервера,

267
00:19:42,250 --> 00:19:47,000
а затем он вернет тот факт, что он удалил этот конкретный документ,

268
00:19:47,000 --> 00:19:49,675
поэтому он просто возвращает этот документ в любом случае.

269
00:19:49,675 --> 00:19:54,670
Но теперь, если я выполняю операцию GET в моем списке избранного,

270
00:19:54,670 --> 00:19:57,580
я извлечу нуль там.

271
00:19:57,580 --> 00:20:00,880
Это означает, что у меня нет этого документа на стороне сервера.

272
00:20:00,880 --> 00:20:03,800
Таким образом, документ «Избранное» полностью исчез,

273
00:20:03,800 --> 00:20:09,352
когда я выполняю операцию DELETE в локальном столбце три из прежних косой черты избранного.

274
00:20:09,352 --> 00:20:12,805
Теперь снова, когда я добавляю новое блюдо в свой список избранного,

275
00:20:12,805 --> 00:20:16,580
мой документ «Избранное» будет настроен снова.

276
00:20:16,580 --> 00:20:21,880
Это прекрасно для нас, чтобы оперировать.

277
00:20:21,880 --> 00:20:26,440
Таким образом, с этой демонстрацией я показал вам

278
00:20:26,440 --> 00:20:32,680
все различные операции, которые вам нужно выполнить на стороне сервера.

279
00:20:32,680 --> 00:20:36,670
Все различные операции на различных конечных точках маршрута

280
00:20:36,670 --> 00:20:40,754
, которые необходимо выполнить или реализовать на стороне сервера.

281
00:20:40,754 --> 00:20:42,265
Теперь, когда вы видели

282
00:20:42,265 --> 00:20:47,720
все различные операции, которые должна поддерживать сторона сервера на слэш избранное,

283
00:20:47,720 --> 00:20:48,895
а также слэш избранное,

284
00:20:48,895 --> 00:20:50,995
косая косая тарелка конечных точек,

285
00:20:50,995 --> 00:20:56,033
позвольте мне перечислить три задачи, которые вам нужно выполнить в этом задании.

286
00:20:56,033 --> 00:21:03,340
Первая задача, конечно, заключается в реализации любимой схемы и модели.

287
00:21:03,340 --> 00:21:09,995
Это вы будете реализовывать в папке моделей в файле, называемом избранным NodeJS.

288
00:21:09,995 --> 00:21:12,460
Там вы будете реализовывать любимую схему.

289
00:21:12,460 --> 00:21:13,952
Помните, что в избранной схеме будет

290
00:21:13,952 --> 00:21:19,720
храниться ссылка на идентификатор объекта документа пользователя

291
00:21:19,720 --> 00:21:26,212
и массив идентификаторов объектов документа посуды.

292
00:21:26,212 --> 00:21:29,440
Это большой намек на то, как вы должны

293
00:21:29,440 --> 00:21:33,355
проектировать схему и модель для ваших любимых.

294
00:21:33,355 --> 00:21:39,190
Вторая задача в вашем назначении заключается в реализации

295
00:21:39,190 --> 00:21:46,555
операций GET, POST и DELETE на конечной точке избранного косой черты.

296
00:21:46,555 --> 00:21:49,245
GET получит вам весь список избранного,

297
00:21:49,245 --> 00:21:52,225
автоматически заполненный заполнением Mongo,

298
00:21:52,225 --> 00:21:58,360
POST должен содержать список блюд, как указано

299
00:21:58,360 --> 00:22:04,425
в формате, который я только что продемонстрировал вам в теле сообщения POST.

300
00:22:04,425 --> 00:22:08,695
Таким образом, куча блюд будет добавлена в ваш список избранного,

301
00:22:08,695 --> 00:22:11,800
а операция DELETE на конечной точке слэша избранное

302
00:22:11,800 --> 00:22:16,215
полностью удалит ваш документ избранного со стороны сервера.

303
00:22:16,215 --> 00:22:22,225
Теперь, если вы выполняете операцию POST на косой чертой любимого кода косой черты,

304
00:22:22,225 --> 00:22:27,405
то конкретное блюдо будет добавлено в ваш список избранного.

305
00:22:27,405 --> 00:22:29,635
Если ваш любимый документ не существует,

306
00:22:29,635 --> 00:22:32,455
вам, очевидно, нужно создать этот любимый документ.

307
00:22:32,455 --> 00:22:36,250
Таким образом, это также часть этой операции POST.

308
00:22:36,250 --> 00:22:39,760
Поэтому, если в какой-то момент вы обнаружите, что любимый документ не существует,

309
00:22:39,760 --> 00:22:41,770
вам нужно сначала создать любимый документ, а

310
00:22:41,770 --> 00:22:44,550
затем добавить это блюдо в любимый документ.

311
00:22:44,550 --> 00:22:47,155
Так что это важный момент, который следует также отметить.

312
00:22:47,155 --> 00:22:51,305
При выполнении POST на конечной точке «Избранное» косой черты,

313
00:22:51,305 --> 00:22:53,290
если избранного документа не существует,

314
00:22:53,290 --> 00:22:58,150
необходимо создать избранный документ, а затем добавить блюда в избранное.

315
00:22:58,150 --> 00:22:59,410
Если он уже существует,

316
00:22:59,410 --> 00:23:02,765
вы обновляете только этот любимый документ.

317
00:23:02,765 --> 00:23:08,480
Таким образом, это еще один намек на то, как вы должны реализовать операции POST.

318
00:23:08,480 --> 00:23:13,735
Если вы выполняете операцию DELETE для косой черты «Избранное» косой черты,

319
00:23:13,735 --> 00:23:18,640
то это конкретное блюдо будет удалено из списка избранного.

320
00:23:18,640 --> 00:23:23,125
Теперь при выполнении операций POST и DELETE

321
00:23:23,125 --> 00:23:28,110
вы должны убедиться, что вы не будете добавлять дубликаты в идентификатор блюда.

322
00:23:28,110 --> 00:23:33,165
Поэтому перед тем, как добавить идентификатор объекта блюда в список блюд,

323
00:23:33,165 --> 00:23:39,490
всегда проверяйте, есть ли идентификатор блюда уже в списке блюд.

324
00:23:39,490 --> 00:23:45,430
Теперь это то, где вы можете использовать метод array IndexOf, чтобы

325
00:23:45,430 --> 00:23:52,395
проверить, существует ли идентификатор документа уже в массиве документов.

326
00:23:52,395 --> 00:23:56,725
Так что это еще один большой намек на то, как вы собираетесь реализовать эту часть.

327
00:23:56,725 --> 00:23:59,610
И третья задача, конечно же, состоит в том, чтобы смонтировать

328
00:23:59,610 --> 00:24:05,725
любимый маршрутизатор на конечных точках слэша избранного путем обновления файла app.js.

329
00:24:05,725 --> 00:24:08,490
Сам любимый маршрутизатор будет реализован

330
00:24:08,490 --> 00:24:13,710
в папке маршрутов в файле favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Поэтому с этим я описал, что вы

332
00:24:17,010 --> 00:24:21,010
должны реализовать в четвертом и последнем задании.

333
00:24:21,010 --> 00:24:24,015
И я надеюсь, что это задание поможет вам

334
00:24:24,015 --> 00:24:27,930
консолидировать все, что вы узнали в ходе курса,

335
00:24:27,930 --> 00:24:32,685
от проектирования экспресс-маршрутизатора

336
00:24:32,685 --> 00:24:40,720
до выполнения MongoDB, а также схемы и модели Mongo,

337
00:24:40,720 --> 00:24:45,095
а также выполнения соответствующей аутентификации пользователя.

338
00:24:45,095 --> 00:24:47,685
И, как я уже упоминал,

339
00:24:47,685 --> 00:24:52,965
только аутентифицированный пользователь получит доступ к своему списку избранного.

340
00:24:52,965 --> 00:24:55,920
Даже операция GET может выполняться только

341
00:24:55,920 --> 00:25:00,750
аутентифицированным пользователем в конечной точке «Избранное» косой черты.

342
00:25:00,750 --> 00:25:05,640
И вы будете получать только избранное для этого конкретного пользователя.

343
00:25:05,640 --> 00:25:12,000
Нельзя разрешить другому пользователю доступ к избранному другого пользователя.

344
00:25:12,000 --> 00:25:15,840
Опять же, это также говорит вам, как вы должны выполнять

345
00:25:15,840 --> 00:25:20,890
аутентификацию на разных конечных точках маршрута.

346
00:25:20,890 --> 00:25:27,595
С этим я завершу описание задач в четвертом задании.

347
00:25:27,595 --> 00:25:31,790
Получайте удовольствие, выполняя это задание.