1
00:00:03,950 --> 00:00:09,405
Вторая часть этого упражнения касается

2
00:00:09,405 --> 00:00:15,340
различных операций get put post и delete на вложенных документах внутри документа.

3
00:00:15,340 --> 00:00:19,380
Как мы видели в примере для блюд,

4
00:00:19,380 --> 00:00:26,680
мы видели, что комментарии включены внутри самого блюда в качестве поддокумента,

5
00:00:26,680 --> 00:00:31,680
в том, как мы определили схему комментариев

6
00:00:31,680 --> 00:00:35,150
и схему блюда, а затем определили модель

7
00:00:35,150 --> 00:00:38,880
блюда, включив схему комментария как массив комментарии.

8
00:00:38,880 --> 00:00:43,580
И мы видели в предыдущем упражнении, как комментарии заключены внутри

9
00:00:43,580 --> 00:00:50,990
массива в виде массива документов внутри каждого документа блюдо.

10
00:00:50,990 --> 00:00:55,525
Итак, как мы вносим изменения в сами комментарии?

11
00:00:55,525 --> 00:00:59,590
Как мы получим весь список комментариев к блюду?

12
00:00:59,590 --> 00:01:06,515
Как изменить конкретный комментарий в блюде и так далее?

13
00:01:06,515 --> 00:01:10,820
Так что это то, что мы увидим о том, как

14
00:01:10,820 --> 00:01:16,130
поддерживать их, используя различные операции get put post и удаления на

15
00:01:16,130 --> 00:01:22,385
блюдо блюда косую косую косую косую чашу комментарии косую

16
00:01:22,385 --> 00:01:29,935
косую косую косую косую косую косую косую косую косую косую

17
00:01:29,935 --> 00:01:32,885
Чтобы приступить к этому упражнению

18
00:01:32,885 --> 00:01:35,735
, снова возвращаясь к блюжному маршрутизатору,

19
00:01:35,735 --> 00:01:44,170
они уже видели, как мы обрабатываем конечную точку косой черты и конечную точку идентификатора косой черты.

20
00:01:44,170 --> 00:01:50,300
Теперь большая часть этой работы, которую мы здесь делаем, уже полезна для нас,

21
00:01:50,300 --> 00:01:53,855
так что я собираюсь сделать, это скопировать этот код,

22
00:01:53,855 --> 00:02:01,070
а затем мы отредактируем этот код соответствующим образом, чтобы обрабатывать комментарии и идентификатор комментария.

23
00:02:01,070 --> 00:02:04,250
Поэтому я собираюсь скопировать весь этот код, который у нас есть

24
00:02:04,250 --> 00:02:08,750
здесь как для косой черты, так и для косой черты золотого блюда ID,

25
00:02:08,750 --> 00:02:14,300
а затем мы вставим его прямо ниже здесь снова.

26
00:02:14,300 --> 00:02:17,795
И тогда мы зайдем и модифицируем каждый из них.

27
00:02:17,795 --> 00:02:21,470
Таким образом, мы видели, что если вы посмотрите назад,

28
00:02:21,470 --> 00:02:27,800
первый из них обрабатывает слэш, который будет установлен на конечной точке слэш блюда.

29
00:02:27,800 --> 00:02:30,905
А следующий - обработка идентификатора тарелки.

30
00:02:30,905 --> 00:02:37,410
Таким образом, третий должен обрабатывать комментарии косой черты кода косой черты.

31
00:02:37,410 --> 00:02:39,060
Таким образом, спускаясь сюда,

32
00:02:39,060 --> 00:02:49,080
этот третий маршрут маршрутизатора блюд будет косой чертой кода косой черты.

33
00:02:49,080 --> 00:02:51,300
И тогда последним, конечно,

34
00:02:51,300 --> 00:02:56,610
будет код косой черты кода косой черты,

35
00:02:56,610 --> 00:03:05,670
а затем косой черты двоеточия комментария ID.

36
00:03:05,670 --> 00:03:09,289
Итак, теперь, когда мы обновили эти маршруты здесь,

37
00:03:09,289 --> 00:03:12,380
теперь следующий шаг - войти и исправить

38
00:03:12,380 --> 00:03:16,310
код в операциях get put post и удаления здесь.

39
00:03:16,310 --> 00:03:22,025
Таким образом, мы начнем с косой черты идентификатор косой черты комментариев конечной точки.

40
00:03:22,025 --> 00:03:25,530
Так что в случае слэш блюдо ID косой черты комментарии конечной точки,

41
00:03:25,530 --> 00:03:31,425
так что мы будем делать блюда найти, но вместо того, чтобы сказать блюда найти,

42
00:03:31,425 --> 00:03:38,100
мы будем делать блюда найти по

43
00:03:38,100 --> 00:03:45,595
ID, и поэтому мы найдем конкретное блюдо, которое мы ищем.

44
00:03:45,595 --> 00:03:53,335
Итак, здесь мы будем искать, что req params блюдо ID,

45
00:03:53,335 --> 00:03:57,820
поэтому мы сначала будем искать блюдо,

46
00:03:57,820 --> 00:04:02,900
и так это вернет конкретное блюдо.

47
00:04:02,900 --> 00:04:06,865
Поэтому, когда он возвращает это конкретное блюдо здесь,

48
00:04:06,865 --> 00:04:13,475
то то, что они будут проверять внутри здесь,

49
00:04:13,475 --> 00:04:20,765
это то, что если блюдо не равно нулю.

50
00:04:20,765 --> 00:04:24,169
Вполне возможно, что блюдо не существует,

51
00:04:24,169 --> 00:04:28,000
поэтому если мы ищем конкретное блюдо с идентификатором блюда,

52
00:04:28,000 --> 00:04:29,495
это блюдо может не существовать,

53
00:04:29,495 --> 00:04:35,360
поэтому нам нужно беспокоиться о том, чтобы справиться с этой конкретной ситуацией.

54
00:04:35,360 --> 00:04:39,590
Итак, давайте рассмотрим эту часть внутри,

55
00:04:39,590 --> 00:04:43,985
и поэтому, если она не равна нулю, то это означает, что блюдо существует.

56
00:04:43,985 --> 00:04:51,125
Так что я собираюсь вырезать это и вставить его туда.

57
00:04:51,125 --> 00:04:54,150
И тогда в этом случае,

58
00:04:54,150 --> 00:04:56,940
так как блюдо не является нулевым,

59
00:04:56,940 --> 00:05:02,300
поэтому мы вернем код состояния и заголовок набора,

60
00:05:02,300 --> 00:05:07,755
а затем здесь мы будем возвращать комментарии к блюду,

61
00:05:07,755 --> 00:05:13,685
потому что нас просят вернуть только комментарии к этому конкретному блюду, так что мы скажем:

62
00:05:13,685 --> 00:05:16,365
«Блюда найти по ID,

63
00:05:16,365 --> 00:05:20,390
затем req параметры блюдо ID, а затем блюдо».

64
00:05:20,390 --> 00:05:25,540
И поэтому мы вернем комментарии к блюду здесь.

65
00:05:25,540 --> 00:05:30,320
В противном случае, так что это другая часть.

66
00:05:30,320 --> 00:05:33,500
Так что значит, что блюдо не существует.

67
00:05:33,500 --> 00:05:35,295
Таким образом, в этом

68
00:05:35,295 --> 00:05:43,095
случае мы построили ошибку здесь, сказав новые ошибки, а затем мы скажем,

69
00:05:43,095 --> 00:05:56,515
блюдо req params идентификатор блюда не найден.

70
00:05:56,515 --> 00:05:59,840
Так что это блюдо не было найдено,

71
00:05:59,840 --> 00:06:04,100
поэтому, очевидно, мы не сможем вернуть комментарии к несуществующему блюду.

72
00:06:04,100 --> 00:06:05,560
Таким образом, в этом случае

73
00:06:05,560 --> 00:06:09,740
мы создадим новый объект ошибки, а затем

74
00:06:09,740 --> 00:06:15,090
установим статус в объекте ошибки в 404.

75
00:06:15,090 --> 00:06:17,855
Опять же, это 404 не найдено,

76
00:06:17,855 --> 00:06:23,420
и тогда мы вернем следующую ошибку.

77
00:06:23,420 --> 00:06:24,990
Итак, зачем мы это делаем?

78
00:06:24,990 --> 00:06:29,885
Потому что, если вы вернете это как ошибку, как вы помните,

79
00:06:29,885 --> 00:06:33,665
это будет обрабатываться вашим файлом app.js,

80
00:06:33,665 --> 00:06:35,565
поэтому в файле app.js,

81
00:06:35,565 --> 00:06:37,220
прямо внизу,

82
00:06:37,220 --> 00:06:40,700
у нас есть обработчик ошибок здесь.

83
00:06:40,700 --> 00:06:42,685
Поэтому, когда он приходит сюда,

84
00:06:42,685 --> 00:06:46,560
это установит остальное или статус в статус точки ошибки,

85
00:06:46,560 --> 00:06:48,410
который мы установили в 404,

86
00:06:48,410 --> 00:06:49,900
так что это то, что будет возвращено,

87
00:06:49,900 --> 00:06:56,720
а затем он просто примет эту ошибку, а затем отобразит эту ошибку здесь.

88
00:06:56,720 --> 00:07:01,020
Таким образом, это позаботится о рендеринге ошибок.

89
00:07:01,020 --> 00:07:07,080
Таким образом, это вернет сообщение об ошибке нашему клиенту.

90
00:07:07,080 --> 00:07:09,490
Это то, что мы вызываем здесь,

91
00:07:09,490 --> 00:07:11,090
поэтому, если блюдо не существует,

92
00:07:11,090 --> 00:07:15,475
мы просто вернем эту ошибку здесь из операции get.

93
00:07:15,475 --> 00:07:19,475
Теперь, для почты в случае поста,

94
00:07:19,475 --> 00:07:24,920
мы ожидаем, что им будет

95
00:07:24,920 --> 00:07:30,980
возвращен идентификатор блюда, а затем мы будем искать блюдо,

96
00:07:30,980 --> 00:07:35,840
а затем мы возьмем набор комментариев

97
00:07:35,840 --> 00:07:41,555
от тела, а затем положим его в блюдо там.

98
00:07:41,555 --> 00:07:46,375
Так что мы скажем блюда, опять же, здесь,

99
00:07:46,375 --> 00:07:52,750
нам придется делать находку по id, потому что мы ищем конкретное блюдо здесь.

100
00:07:52,750 --> 00:07:59,485
Так что для поста, мы скажем, блюдо найти по ID, затем блюдо,

101
00:07:59,485 --> 00:08:01,750
и поэтому внутри здесь,

102
00:08:01,750 --> 00:08:04,060
если блюдо существует,

103
00:08:04,060 --> 00:08:06,555
то мы будем обрабатывать блюдо соответствующим образом.

104
00:08:06,555 --> 00:08:10,360
Если нет, то нам придется отправить сообщение об ошибке.

105
00:08:10,360 --> 00:08:16,730
Так что позвольте мне скопировать эту часть из get, а затем,

106
00:08:16,730 --> 00:08:20,710
мы заменим это здесь.

107
00:08:22,130 --> 00:08:25,155
Итак, очевидно, если блюдо не существует,

108
00:08:25,155 --> 00:08:27,165
то мы вернем эту ошибку здесь,

109
00:08:27,165 --> 00:08:31,035
но если блюдо существует, в этом случае

110
00:08:31,035 --> 00:08:35,930
мы вернем код состояния 200 set header.

111
00:08:35,930 --> 00:08:41,835
Но прежде чем мы передадим значение,

112
00:08:41,835 --> 00:08:50,400
то, что я собираюсь сделать, это сказать блюдо комментарии,

113
00:08:50,400 --> 00:08:55,020
поэтому мы публикуем новый набор комментариев для блюда.

114
00:08:55,130 --> 00:09:02,790
Так что мы скажем, комментарии к блюду толкать req тело.

115
00:09:02,790 --> 00:09:07,785
Потому что тело сообщения содержит все комментарии, которые нужно нажать здесь,

116
00:09:07,785 --> 00:09:13,890
а затем мы скажем: «Блюдо сохранить».

117
00:09:13,890 --> 00:09:22,010
И поэтому, если сохранение возвращается успешно с блюдом здесь,

118
00:09:22,010 --> 00:09:27,030
поэтому мы вышлем обновленное блюдо отсюда.

119
00:09:32,350 --> 00:09:40,600
Так что эта часть, где мы создаем код состояния,

120
00:09:40,600 --> 00:09:49,750
мы сделаем это внутри здесь, а затем мы отправим обратно

121
00:09:54,320 --> 00:10:00,875
res.json и блюдо, которое мы получили здесь.

122
00:10:00,875 --> 00:10:04,885
Итак, то, что мы делаем, это то, что мы берем блюдо здесь.

123
00:10:04,885 --> 00:10:11,430
Сначала мы толкаем комментарии в блюдо,

124
00:10:11,430 --> 00:10:14,420
новый набор комментариев в блюдо здесь,

125
00:10:14,420 --> 00:10:19,210
а затем мы сохраняем обновленное блюдо здесь.

126
00:10:19,210 --> 00:10:20,825
Затем после сохранения

127
00:10:20,825 --> 00:10:29,070
мы собираемся вернуть обновленное блюдо обратно пользователю здесь.

128
00:10:29,290 --> 00:10:32,125
Затем, если есть ошибка,

129
00:10:32,125 --> 00:10:37,370
то мы будем обрабатывать ошибку так же, как мы сделали здесь.

130
00:10:38,570 --> 00:10:41,420
Если блюдо не существует, конечно,

131
00:10:41,420 --> 00:10:45,825
мы вернем ошибку, говоря, что блюдо не существует.

132
00:10:45,825 --> 00:10:47,475
Итак, это для поста.

133
00:10:47,475 --> 00:10:49,100
Операция PUT, конечно,

134
00:10:49,100 --> 00:10:51,680
не поддерживается на блюдах.

135
00:10:51,680 --> 00:10:53,140
Итак, в этом случае

136
00:10:53,140 --> 00:10:56,210
мы пытаемся выполнить операцию PUT

137
00:10:56,210 --> 00:11:06,550
на блюдах, req.params.dishid/comments.

138
00:11:08,370 --> 00:11:10,980
Так что, это запрещено.

139
00:11:10,980 --> 00:11:13,415
Итак, это то, что мы говорим для операции PUT.

140
00:11:13,415 --> 00:11:15,545
Для операции удаления,

141
00:11:15,545 --> 00:11:19,130
то, что мы сделаем, это сначала найти блюдо.

142
00:11:19,130 --> 00:11:22,275
Итак, мы скажем «Dish.FindbyID».

143
00:11:22,275 --> 00:11:27,785
Таким образом, удаление означает, что мы удаляем все комментарии из блюда, а

144
00:11:27,785 --> 00:11:28,850
не само блюдо,

145
00:11:28,850 --> 00:11:31,540
но мы удаляем все комментарии из блюда.

146
00:11:31,540 --> 00:11:33,495
Итак, в этом случае,

147
00:11:33,495 --> 00:11:41,695
то, что мы в конечном итоге делаем следующим образом: так что если блюдо не является нулевым,

148
00:11:41,695 --> 00:11:47,345
помните, что мы должны справиться с этим, сказав затем блюдо.

149
00:11:47,345 --> 00:11:49,400
Если блюдо не является нулевым,

150
00:11:49,400 --> 00:11:53,080
то мы бы удалили все комментарии из блюда.

151
00:11:53,080 --> 00:11:57,480
Итак, я собираюсь скопировать этот код, а затем вставить его сюда,

152
00:11:57,480 --> 00:12:00,880
а затем мы отредактируем этот код, а затем удалим.

153
00:12:00,880 --> 00:12:06,070
Посмотрим, не будет ли блюдо нулевым,

154
00:12:06,070 --> 00:12:10,085
тогда они вернут блюдо сюда.

155
00:12:10,085 --> 00:12:12,495
Таким образом, если блюдо не является

156
00:12:12,495 --> 00:12:16,700
нулевым, wat мы бы обработали это следующим образом.

157
00:12:16,700 --> 00:12:24,975
Таким образом, нам придется войти и удалить каждый из комментариев.

158
00:12:24,975 --> 00:12:36,380
Итак, мы скажем для (var i =

159
00:12:36,380 --> 00:12:49,940
(dish.comments.length -1) i>= 0; i—).

160
00:12:49,940 --> 00:12:55,860
Итак, мы буквально входим и удаляем каждый комментарий.

161
00:12:55,860 --> 00:12:56,380
Итак, скажем

162
00:12:56,380 --> 00:13:11,370
dish.comments.id (dish.comments.id [i]. _id).

163
00:13:11,370 --> 00:13:15,060
Мы скажем «удалить».

164
00:13:15,060 --> 00:13:19,490
Итак, мы собираемся удалить каждую из посуды,

165
00:13:19,490 --> 00:13:22,520
по одному под каждый из комментариев один за другим.

166
00:13:23,420 --> 00:13:26,910
Так вот, что мы будем делать с комментариями.

167
00:13:26,910 --> 00:13:30,600
Затем, как только мы удалили все комментарии к блюду,

168
00:13:30,600 --> 00:13:34,800
то нам придется сохранить блюдо, а затем отправить обратно.

169
00:13:34,800 --> 00:13:38,345
Итак, и раньше, когда мы модифицировали блюдо,

170
00:13:38,345 --> 00:13:39,760
это то, что мы сделали здесь.

171
00:13:39,760 --> 00:13:43,250
Итак, я собираюсь скопировать эту часть,

172
00:13:43,610 --> 00:13:46,415
а затем зайти сюда,

173
00:13:46,415 --> 00:13:52,060
а затем сказать dash.save,

174
00:13:52,060 --> 00:13:57,085
тогда мы вернем блюдо

175
00:13:57,085 --> 00:14:02,470
сюда, чтобы указать, что обновленное блюдо возвращается сюда.

176
00:14:02,470 --> 00:14:05,130
Итак, вот как мы удалим комментарии.

177
00:14:05,130 --> 00:14:07,225
Итак, здесь мы идем,

178
00:14:07,225 --> 00:14:10,800
теперь нет простого способа буквально вытащить

179
00:14:10,800 --> 00:14:15,330
все комментарии из массива, когда у вас есть поддокумент.

180
00:14:15,330 --> 00:14:19,680
Таким образом, вы должны войти и удалить каждый вложенный документ один за другим.

181
00:14:19,680 --> 00:14:22,720
Итак, это то, что я делаю в этом цикле здесь.

182
00:14:22,720 --> 00:14:27,500
Итак, я говорю для (var i = dish.comments.length).

183
00:14:27,500 --> 00:14:31,270
Итак, я смотрю на массив комментариев, а затем начиная с

184
00:14:31,270 --> 00:14:35,430
последнего комментария в этом массиве до самого первого комментария,

185
00:14:35,430 --> 00:14:38,940
я вхожу, а затем удаляю комментарий по комментарию здесь, используя

186
00:14:38,940 --> 00:14:42,905
операцию удаления во вложенном документе.

187
00:14:42,905 --> 00:14:47,320
Итак, способ, которым мы получим доступ к вложенному документу, заключается в том, что

188
00:14:47,320 --> 00:14:53,720
блюдо, а затем комментарии - это имя поля, а затем я говорю id здесь.

189
00:14:53,720 --> 00:14:56,259
Итак, вот как вы обращаетесь к вложенному документу,

190
00:14:56,259 --> 00:15:02,115
и внутри здесь вы укажете идентификатор вложенных документов, к которым вы пытаетесь получить доступ.

191
00:15:02,115 --> 00:15:06,310
Итак, все это даст вам доступ к вложенному документу,

192
00:15:06,310 --> 00:15:09,670
а затем мы вызываем метод удаления на вложенном документе,

193
00:15:09,670 --> 00:15:14,320
и таким образом вложенный документ будет удален из массива вложенных документов.

194
00:15:14,320 --> 00:15:17,980
После этого, после того, как мы удалим все комментарии,

195
00:15:17,980 --> 00:15:21,075
я сохраню изменения и все.

196
00:15:21,075 --> 00:15:25,840
Итак, все мои комментарии будут удалены с того блюда.

197
00:15:25,840 --> 00:15:33,335
Теперь мы будем иметь дело с следующей конечной точкой, которая является dishidcomments /:CommentID.

198
00:15:33,335 --> 00:15:35,460
Итак, в этом случае

199
00:15:35,460 --> 00:15:42,410
мы начнем сначала найти блюдо, а затем после того, как мы найдем блюдо,

200
00:15:42,410 --> 00:15:47,460
тогда мы должны убедиться, что блюдо существует,

201
00:15:47,460 --> 00:15:49,310
а затем разобраться с блюдом.

202
00:15:49,310 --> 00:15:52,320
Итак, я собираюсь удалить эту часть,

203
00:15:52,320 --> 00:15:59,350
а затем мы скажем, давайте скопируем эту часть из git, который у нас был ранее,

204
00:16:09,140 --> 00:16:13,650
потому что нам нужно иметь возможность иметь дело с ситуацией,

205
00:16:13,650 --> 00:16:20,095
когда либо блюдо не существует, либо блюдо существует, но комментариев не существует,

206
00:16:20,095 --> 00:16:23,870
или само блюдо не существует.

207
00:16:23,870 --> 00:16:28,280
Итак, есть три условия, которые мне нужно проверить.

208
00:16:28,280 --> 00:16:32,650
Итак, мы скажем, если (блюдо! =

209
00:16:32,650 --> 00:16:51,180
null && dish.comments.id (req.params.commentid)! =

210
00:16:51,180 --> 00:17:00,545
null, так что это означает, что блюдо существует, а также комментарии существуют в блюде,

211
00:17:00,545 --> 00:17:05,560
только тогда мы можем отправить обратно конкретный комментарий, который был запрошен.

212
00:17:05,560 --> 00:17:07,680
Итак, в этом случае

213
00:17:07,680 --> 00:17:14,525
мы скажем, что StatusCode - 200, приложение setHeader json,

214
00:17:14,525 --> 00:17:19,895
а затем здесь мы отправим обратно dish.comments,

215
00:17:19,895 --> 00:17:25,300
и мы отправляем обратно этот конкретный комментарий.

216
00:17:25,300 --> 00:17:29,350
Таким образом, это конкретный комментарий, который мы отправляем max.

217
00:17:29,350 --> 00:17:37,925
Таким образом, это позволит нам получить конкретный комментарий из набора комментариев.

218
00:17:37,925 --> 00:17:46,895
Теперь мы скажем иначе, если блюдо равно нулю.

219
00:17:46,895 --> 00:17:49,180
Таким образом, блюда нулевые,

220
00:17:49,180 --> 00:17:55,830
то, конечно, нам придется указать, что блюдо не существует, и

221
00:17:55,830 --> 00:18:02,105
последнее условие - если сам комментарий является нулевым.

222
00:18:02,105 --> 00:18:08,360
Итак, в этом случае я также должен указать, что сам комментарий не существует,

223
00:18:08,360 --> 00:18:13,130
этот конкретный идентификатор комментария не существует, поэтому в этом случае

224
00:18:13,130 --> 00:18:15,355
я скажу, что новый

225
00:18:15,355 --> 00:18:23,930
комментарий ошибки req.params.commentID не найден.

226
00:18:23,930 --> 00:18:25,520
Итак, три условия.

227
00:18:25,520 --> 00:18:31,045
Во-первых, вы должны убедиться, что сначала блюдо существует и блюдо комментарии существуют,

228
00:18:31,045 --> 00:18:34,285
если они делают, то я могу отправить обратно конкретный комментарий,

229
00:18:34,285 --> 00:18:41,505
если нет, если блюдо само не существует на стороне сервера в базе данных,

230
00:18:41,505 --> 00:18:44,340
то я укажу, что блюдо не существует, но если

231
00:18:44,340 --> 00:18:47,300
блюдо блюдо не существует существует, но комментарий не существует,

232
00:18:47,300 --> 00:18:50,870
тогда я отправлю обратно сообщение о том, что комментарий не существует.

233
00:18:50,870 --> 00:18:55,495
Итак, обратите внимание, что они должны обрабатывать все возможные условия здесь для GET.

234
00:18:55,495 --> 00:18:57,500
Для POST, конечно,

235
00:18:57,500 --> 00:19:01,895
операция после не поддерживается на этой конечной точке,

236
00:19:01,895 --> 00:19:04,060
поэтому мы скажем

237
00:19:08,900 --> 00:19:18,100
comments slash req.params.commentid.

238
00:19:18,950 --> 00:19:26,205
Таким образом, операция POST не поддерживается в этом идентификаторе комментария. А что насчёт PUT?

239
00:19:26,205 --> 00:19:31,360
PUT - более интересный случай здесь.

240
00:19:31,360 --> 00:19:33,550
Итак, опять же, даже для пута,

241
00:19:33,550 --> 00:19:40,205
я должен обрабатывать все эти возможные условия,

242
00:19:40,205 --> 00:19:49,150
поэтому я собираюсь посмотреть на это и сказать, хорошо для этого,

243
00:19:49,370 --> 00:19:55,045
позвольте мне скопировать весь этот код, потому что мы должны обрабатывать

244
00:19:55,045 --> 00:20:03,260
все эти возможности, а затем я скажу вам, как мы обрабатываем дело PUT здесь.

245
00:20:03,260 --> 00:20:06,685
Итак, в случае PUT,

246
00:20:06,685 --> 00:20:10,140
сначала, конечно, нам нужно найти бойню.

247
00:20:10,140 --> 00:20:13,600
Таким образом, они скажут, что блюда найти по Id req param Id,

248
00:20:13,600 --> 00:20:20,845
тогда если блюдо существует и сам комментарий существует,

249
00:20:20,845 --> 00:20:23,080
то я знаю, что могу обновить комментарий.

250
00:20:23,080 --> 00:20:28,660
В противном случае, эти два условия, очевидно, должны быть приняты во внимание,

251
00:20:28,660 --> 00:20:32,740
что комментарий не существует или блюдо не существует.

252
00:20:32,740 --> 00:20:35,350
Эти двое уже разбираются в этом деле.

253
00:20:35,350 --> 00:20:38,190
Вот особая ситуация, которая у нас есть.

254
00:20:38,190 --> 00:20:45,355
Итак, если блюдо существует и конкретный комментарий, который я ищу, также существует,

255
00:20:45,355 --> 00:20:50,300
то я знаю, что в теле сообщения

256
00:20:50,300 --> 00:20:53,760
указано обновление для комментария.

257
00:20:53,760 --> 00:20:55,625
Поэтому мне нужно обновить это.

258
00:20:55,625 --> 00:21:00,760
Итак, где-то здесь я делаю модификации,

259
00:21:00,760 --> 00:21:02,910
я делаю блюдо сохранить здесь,

260
00:21:02,910 --> 00:21:10,110
поэтому я собираюсь войти и скопировать немного этого кода отсюда,

261
00:21:10,960 --> 00:21:17,680
конечно, это не правильно, но мне просто нужна часть кода оттуда,

262
00:21:17,680 --> 00:21:19,940
поэтому я войду в PUT.

263
00:21:19,940 --> 00:21:23,270
Позвольте мне вставить его на место здесь, а

264
00:21:23,270 --> 00:21:27,340
потом я расскажу вам, как именно они будут справляться с этим.

265
00:21:27,700 --> 00:21:31,200
Потому что мне нужно блюдо сохранить часть.

266
00:21:31,200 --> 00:21:35,950
Итак, как мы обрабатываем обновление для конкретного комментария?

267
00:21:35,950 --> 00:21:39,510
Таким образом, для обновления конкретного комментария

268
00:21:39,510 --> 00:21:45,265
мы знаем, что этот комментарий должен быть обновлен,

269
00:21:45,265 --> 00:21:49,900
поэтому мы знаем, что блюдо существует и сам комментарий существует.

270
00:21:49,900 --> 00:21:53,885
Я хочу обновить поля текущего.

271
00:21:53,885 --> 00:21:56,690
Теперь, если комментарий уже существует, я не хочу,

272
00:21:56,690 --> 00:21:59,530
чтобы пользователь мог изменить автора комментария,

273
00:21:59,530 --> 00:22:00,890
автор должен сохранить.

274
00:22:00,890 --> 00:22:09,090
Единственные два поля, которые я бы позволил пользователю обновить, это рейтинг.

275
00:22:09,090 --> 00:22:12,380
Таким образом, в теле входящего сообщения PUT

276
00:22:12,380 --> 00:22:15,089
я могу либо включить

277
00:22:15,089 --> 00:22:17,680
обновленный рейтинг

278
00:22:21,830 --> 00:22:28,110
, либо обновленный комментарий.

279
00:22:28,110 --> 00:22:33,475
Это единственные две вещи, которые я позволю пользователю изменить.

280
00:22:33,475 --> 00:22:40,190
Поэтому, если свойство рейтинга есть косвенное тело, чтобы вызвать, что тело

281
00:22:40,190 --> 00:22:47,940
будет содержать обновление, которое мы пытаемся сделать это в этом случае мы скажем блюдо.

282
00:22:48,240 --> 00:22:51,460
Итак, мы скажем комментарии к блюду,

283
00:22:51,460 --> 00:22:54,000
так что позвольте мне просто скопировать эту часть.

284
00:22:54,000 --> 00:22:56,980
Комментарий к блюдам ID.

285
00:22:56,980 --> 00:23:02,770
Теперь это простой способ справиться с этой проблемой здесь.

286
00:23:05,950 --> 00:23:11,525
Поскольку нет конкретного способа обновления

287
00:23:11,525 --> 00:23:16,655
конкретного комментария, который находится в вложенном документе,

288
00:23:16,655 --> 00:23:19,330
нет конкретного метода для этого.

289
00:23:19,330 --> 00:23:24,950
Таким образом, это обходной путь, который я нашел, который, похоже, работает для нас,

290
00:23:24,950 --> 00:23:32,820
поэтому мы скажем, блюдо comments req параметр comment Id рейтинг равен req body.rating.

291
00:23:34,700 --> 00:23:37,640
Поэтому я обновлю рейтинг.

292
00:23:37,640 --> 00:23:42,420
Аналогично, если комментарий существует,

293
00:23:42,420 --> 00:23:51,995
то я скажу req comment Id comment req comment req body comment.

294
00:23:51,995 --> 00:23:57,655
Так вот, как я буду обновлять рейтинг и комментарий,

295
00:23:57,655 --> 00:24:00,230
и я однажды говорю об обновленном рейтинге и комментарии,

296
00:24:00,230 --> 00:24:02,155
и они сохранят блюдо,

297
00:24:02,155 --> 00:24:08,140
а потом как только я сохраню блюдо, то отправлю обратно ответ.

298
00:24:08,140 --> 00:24:15,120
Итак, обратите внимание, что это единственный способ, которым я нашел, который достаточно

299
00:24:15,120 --> 00:24:22,785
легко обновить встроенный вложенный документ внутри документа Mongoose.

300
00:24:22,785 --> 00:24:28,520
Нет явного способа, который Mongoose поддерживает для обновления встроенного документа.

301
00:24:28,520 --> 00:24:34,275
Таким образом, это обходной путь, который я нашел, который позволяет нам выполнить эту операцию.

302
00:24:34,275 --> 00:24:38,825
Теперь для операции удаления.

303
00:24:38,825 --> 00:24:43,940
Для операции удаления мы удаляем только специфический

304
00:24:43,940 --> 00:24:48,880
комментарий, поэтому я возьму эту информацию из

305
00:24:48,880 --> 00:24:53,915
deleter для

306
00:24:53,915 --> 00:24:55,880
всех комментариев и вместо удаления всех комментариев

307
00:24:55,880 --> 00:24:58,190
я собираюсь удалить только конкретный комментарий.

308
00:24:58,190 --> 00:25:03,095
Итак, позвольте мне скопировать это из удаления.

309
00:25:03,095 --> 00:25:07,920
Позвольте мне вставить его здесь, а затем мы обновим это.

310
00:25:07,920 --> 00:25:13,910
Итак, если я удаляю конкретный комментарий, поэтому я сначала найду блюдо.

311
00:25:13,910 --> 00:25:17,240
Если блюдо не является нулевым,

312
00:25:17,240 --> 00:25:21,480
напомним, что в этой ситуации я должен обрабатывать как блюдо,

313
00:25:21,480 --> 00:25:26,395
не являющееся нулевым, так и комментарий, не являющийся нулевым.

314
00:25:26,395 --> 00:25:29,150
Итак, я скажу, если

315
00:25:32,890 --> 00:25:39,840
блюдо не равно нулю, а параметр идентификатора комментариев блюдо не равен нулю,

316
00:25:39,840 --> 00:25:44,335
тогда я знаю, что у меня есть конкретный комментарий, который я хочу удалить.

317
00:25:44,335 --> 00:25:45,850
Я не удаляю все комментарии,

318
00:25:45,850 --> 00:25:49,770
я удаляю только конкретный комментарий здесь.

319
00:25:49,770 --> 00:25:58,700
Итак, я скажу идентификатор комментариев блюда, а затем я удаляю конкретный комментарий здесь, который

320
00:25:58,700 --> 00:26:07,780
является req.params.commentid и удаляю

321
00:26:07,780 --> 00:26:14,565
этот конкретный комментарий, а затем я сохраню обновленное блюдо, а затем перейду с этим.

322
00:26:14,565 --> 00:26:19,225
Теперь, остальная часть мне нужно справиться с обеими ситуациями.

323
00:26:19,225 --> 00:26:23,180
Итак, позвольте мне скопировать эту часть еще, если блюдо не равно нулю и

324
00:26:23,180 --> 00:26:28,420
так далее, а затем заменить это здесь.

325
00:26:28,420 --> 00:26:33,480
Итак, если блюдо нулевое, я отправлю обратно ошибку, говорящую, что блюдо не существует.

326
00:26:33,480 --> 00:26:37,640
Если комментарий равен нулю, я отправлю обратно ошибку, говорящую, что комментарий не существует.

327
00:26:37,640 --> 00:26:39,520
Вот и все,

328
00:26:39,520 --> 00:26:41,770
это обновление, которое я делаю здесь.

329
00:26:41,770 --> 00:26:44,395
Для удаления конкретного комментария

330
00:26:44,395 --> 00:26:47,670
я сначала убедитесь, что блюдо и комментарий

331
00:26:47,670 --> 00:26:52,040
существуют, затем я удалю конкретный комментарий, а затем я

332
00:26:52,040 --> 00:26:54,520
сохраню изменения в блюде, а затем продолжаю

333
00:26:54,520 --> 00:27:00,315
обработку остальных случаев, вот и все.

334
00:27:00,315 --> 00:27:05,310
Давайте сохраним изменения, а затем посмотрим, как это работает.

335
00:27:05,310 --> 00:27:07,210
Отправляясь на терминал,

336
00:27:07,210 --> 00:27:12,150
я вижу, что сервер MongoDB не работает и работает, поэтому давайте начнем там.

337
00:27:12,150 --> 00:27:14,000
Убедитесь, конечно,

338
00:27:14,000 --> 00:27:16,075
что сервер MongoDB запущен и запущен,

339
00:27:16,075 --> 00:27:19,070
давайте также запустим наш экспресс-сервер.

340
00:27:19,890 --> 00:27:23,165
Как только ваш экспресс-сервер запущен и работает,

341
00:27:23,165 --> 00:27:27,185
то, что мы будем делать, это теперь мы смотрим конкретно

342
00:27:27,185 --> 00:27:32,420
на комментарии, а затем выполняем операции над комментариями.

343
00:27:32,420 --> 00:27:36,320
Итак, давайте пойдем к почтальону, а

344
00:27:36,320 --> 00:27:44,540
затем проверить, что у нас есть в базе данных, а затем попытаемся изменить комментарии.

345
00:27:44,540 --> 00:27:47,760
Итак, вот я в Почтальоне,

346
00:27:47,760 --> 00:27:53,265
так что позвольте мне сначала получить посуду, а теперь я вижу, что посуда пуста.

347
00:27:53,265 --> 00:28:02,385
Так что позвольте мне разместить блюдо в списке блюд, так что позвольте мне опубликовать одно блюдо.

348
00:28:02,385 --> 00:28:04,860
Напомним, что у нас есть это блюдо ей,

349
00:28:04,860 --> 00:28:11,540
поэтому в моем почтальоне я уже делал это для предыдущего упражнения.

350
00:28:11,540 --> 00:28:16,160
Я просто собираюсь выбрать это, а затем опубликовать это блюдо, а затем вы

351
00:28:16,160 --> 00:28:21,205
увидите, что это конкретное блюдо было опубликовано здесь, внизу.

352
00:28:21,205 --> 00:28:25,060
Вы можете видеть, что блюдо было создано прямо там.

353
00:28:25,060 --> 00:28:33,970
Позвольте мне теперь скопировать этот конкретный идентификатор блюда, а затем я собираюсь

354
00:28:33,970 --> 00:28:45,505
получить это блюдо здесь.

355
00:28:45,505 --> 00:28:49,920
Итак, вы видите, что это блюдо существует здесь.

356
00:28:49,920 --> 00:28:52,575
Сначала давайте получим все комментарии.

357
00:28:52,575 --> 00:28:55,480
Итак, если я сделаю получить комментарии, вы заметите, что

358
00:28:55,480 --> 00:28:58,370
все комментарии для этого конкретного блюда были возвращены.

359
00:28:58,370 --> 00:29:02,195
Мы можем сделать сообщение и удаление также.

360
00:29:02,195 --> 00:29:05,865
Давайте сделаем это, и, очевидно, вы не можете сделать надеть

361
00:29:05,865 --> 00:29:09,960
назад, чтобы вы заметили, что операция ввода не работает на этом.

362
00:29:09,960 --> 00:29:13,110
Давайте оставим новый комментарий.

363
00:29:13,110 --> 00:29:18,070
Поэтому, чтобы опубликовать новый комментарий, мы войдем в тело,

364
00:29:18,380 --> 00:29:28,990
а затем позвольте мне вырезать все это, а затем мы отредактируем один из

365
00:29:28,990 --> 00:29:31,130
комментариев, а затем

366
00:29:35,790 --> 00:29:40,045
попытаемся опубликовать этот комментарий.

367
00:29:40,045 --> 00:29:45,130
Итак, мы скажем рейтинг три, а затем мы

368
00:29:45,130 --> 00:29:56,110
скажем тест комментарий, тестовый пользователь.

369
00:29:56,110 --> 00:29:58,425
Давайте оставим этот комментарий.

370
00:29:58,425 --> 00:30:00,190
Когда вы публикуете этот комментарий,

371
00:30:00,190 --> 00:30:05,920
вы видите, что блюдо обновления было возвращено здесь, и вы видите, что в

372
00:30:05,920 --> 00:30:14,530
этом блюде вы видите, что новый комментарий был включен там.

373
00:30:14,530 --> 00:30:20,335
Итак, давайте скопируем все это.

374
00:30:20,335 --> 00:30:27,515
Теперь мы попытаемся получить тот конкретный комментарий, который мы только что вставили.

375
00:30:27,515 --> 00:30:31,440
Для этого конкретного комментария это идентификатор этого комментария.

376
00:30:31,440 --> 00:30:35,180
Поэтому позвольте мне скопировать идентификатор для этого конкретного комментария.

377
00:30:35,180 --> 00:30:38,545
Возвращаясь к Почтальону,

378
00:30:38,545 --> 00:30:43,915
позвольте мне попытаться получить этот конкретный комментарий, выполнив операцию get.

379
00:30:43,915 --> 00:30:48,380
Там вы видите, что этот конкретный комментарий был извлечен здесь.

380
00:30:48,380 --> 00:30:52,050
Теперь, если вы пытаетесь сделать сообщение об этом, это не сработает,

381
00:30:52,050 --> 00:30:56,445
так очевидно, что вы видите, что послеоперационная операция не разрешена на этом.

382
00:30:56,445 --> 00:31:01,370
Давайте сделаем операцию put,

383
00:31:03,860 --> 00:31:06,385
на этом конкретном комментарии.

384
00:31:06,385 --> 00:31:10,010
Итак, если я должен был поместить операцию в тело,

385
00:31:10,390 --> 00:31:18,285
я собираюсь сказать обновленный комментарий к тесту.

386
00:31:18,285 --> 00:31:23,200
Итак, я собираюсь обновить поле комментария этого комментария.

387
00:31:23,200 --> 00:31:28,745
Если вы говорите, чтобы надеть это, вы увидите, что для конкретного комментария,

388
00:31:28,745 --> 00:31:33,670
комментарий был обновлен, чтобы отразить обновленный тестовый комментарий.

389
00:31:33,670 --> 00:31:39,515
Таким образом, вы видите, что операция ввода в поле комментариев также работает правильно.

390
00:31:39,515 --> 00:31:42,820
Давайте удалим этот комментарий,

391
00:31:42,820 --> 00:31:46,660
чтобы я мог удалить комментарий, а затем, когда я удалю комментарий, вы

392
00:31:46,660 --> 00:31:50,475
увидите, что этот комментарий исчез из списка комментариев.

393
00:31:50,475 --> 00:31:53,915
Таким образом, вы видите, что операция удаления также работает.

394
00:31:53,915 --> 00:31:55,970
Удалим все комментарии.

395
00:31:55,970 --> 00:32:00,595
Поэтому я собираюсь войти и удалить все комментарии.

396
00:32:00,595 --> 00:32:04,650
Затем вы видите, что все комментарии были удалены,

397
00:32:04,650 --> 00:32:09,380
и вы видите, что область комментариев теперь пуста.

398
00:32:09,380 --> 00:32:13,050
Итак, теперь вы можете видеть все

399
00:32:13,050 --> 00:32:14,905
операции get, put, post и

400
00:32:14,905 --> 00:32:21,064
delete на

401
00:32:21,064 --> 00:32:25,455
диске/dishid/commentID,

402
00:32:25,455 --> 00:32:29,710
REST API работают так, как ожидалось.

403
00:32:29,710 --> 00:32:32,670
Таким образом, мы завершаем это упражнение.

404
00:32:32,670 --> 00:32:38,365
Таким образом, в этом упражнении мы завершили реализацию косой черты блюд,

405
00:32:38,365 --> 00:32:42,395
REST API конечной точки и поддерживали весь путь до того,

406
00:32:42,395 --> 00:32:47,070
чтобы позволить нам манипулировать одним блюдом,

407
00:32:47,070 --> 00:32:48,730
коллекцией блюд,

408
00:32:48,730 --> 00:32:52,165
одним комментарием, а также сборкой комментариев.

409
00:32:52,165 --> 00:32:56,930
Это хорошее время для вас сделать git commit с сообщением,

410
00:32:56,930 --> 00:33:02,600
express, REST API с Mongoose часть вторая.