1
00:00:03,680 --> 00:00:07,560
В этом упражнении мы продолжим работу над

2
00:00:07,560 --> 00:00:11,190
узлом Mongoose сервер, который мы разработали в предыдущем упражнении.

3
00:00:11,190 --> 00:00:13,770
Мы сделаем еще одну вариацию.

4
00:00:13,770 --> 00:00:19,190
Кроме того, мы также рассмотрим, как Mongoose поддерживает поддокументы,

5
00:00:19,190 --> 00:00:22,760
и это позволяет нам хранить документ внутри

6
00:00:22,760 --> 00:00:26,860
документа для хранения дополнительной информации.

7
00:00:26,860 --> 00:00:31,055
Посмотрим на это в следующем упражнении.

8
00:00:31,055 --> 00:00:36,905
Продолжая пример, над которым мы работали, теперь,

9
00:00:36,905 --> 00:00:39,680
в файле index.js,

10
00:00:39,680 --> 00:00:46,040
теперь мы увидим новый способ создания блюда и добавления его в наше приложение.

11
00:00:46,040 --> 00:00:51,590
Итак, ранее мы сделали вар NewDish и блюда и определить блюдо.

12
00:00:51,590 --> 00:00:57,980
Теперь, в этом случае мы будем использовать новый метод под названием блюда create, который принимает,

13
00:00:57,980 --> 00:01:05,950
в качестве параметра, NewDish для создания и затем сохраняет его в нашем приложении.

14
00:01:05,950 --> 00:01:11,165
Таким образом, вместо того, чтобы делать это сохранение NewDish,

15
00:01:11,165 --> 00:01:18,550
мы можем просто удалить это и непосредственно иметь дело с методом создания блюд здесь.

16
00:01:18,550 --> 00:01:22,850
Таким образом, метод создания блюд будет принимать в качестве параметра

17
00:01:22,850 --> 00:01:27,320
новый документ, который должен быть сохранен в нашей базе данных,

18
00:01:27,320 --> 00:01:31,355
а затем создает и добавляет документ в базу данных.

19
00:01:31,355 --> 00:01:35,285
После этого мы можем продолжить остальную часть учений.

20
00:01:35,285 --> 00:01:40,390
Эта незначительная модификация покажет

21
00:01:40,390 --> 00:01:45,790
, что одно и то же приложение работает точно так же, как и раньше.

22
00:01:45,790 --> 00:01:47,365
Итак, с этим изменением

23
00:01:47,365 --> 00:01:50,080
позвольте мне просто изменить отступ

24
00:01:50,080 --> 00:01:56,370
здесь, чтобы цепочка методов тогдашнего очень ясна.

25
00:01:56,370 --> 00:02:01,130
Итак, мы сначала создаем блюда, которые вернут обещание,

26
00:02:01,130 --> 00:02:04,300
а затем переходим к тогдашнему, а затем

27
00:02:04,300 --> 00:02:10,255
выполним оставшиеся шаги на созданном блюде.

28
00:02:10,255 --> 00:02:15,905
Давайте сохраним изменения, а затем посмотрим на эту версию нашего сервера.

29
00:02:15,905 --> 00:02:17,475
Перейдя к терминалу

30
00:02:17,475 --> 00:02:20,675
, еще раз запустив приложение,

31
00:02:20,675 --> 00:02:28,040
мы видим, что оно создаст точно так же, как предыдущая вариация сервера.

32
00:02:28,040 --> 00:02:33,290
Итак, мы создаем новое блюдо здесь, а затем вставляем его в

33
00:02:33,290 --> 00:02:36,800
базу данных, а затем

34
00:02:36,800 --> 00:02:40,760
извлекаем блюдо, а затем распечатываем его на экране.

35
00:02:40,760 --> 00:02:43,610
С этим изменением, это хорошее время для нас, чтобы сделать

36
00:02:43,610 --> 00:02:47,795
git фиксацию с сообщением Mongoose часть вторая.

37
00:02:47,795 --> 00:02:57,450
Итак, давайте проверим статус git, а затем добавим файл в репозиторий,

38
00:02:57,450 --> 00:03:06,390
а затем выполним git фиксацию с сообщением Mongoose часть вторая.

39
00:03:06,390 --> 00:03:08,800
Продолжая упражнение,

40
00:03:08,800 --> 00:03:13,910
на следующем шаге мы собираемся добавить вложенный документ в

41
00:03:13,910 --> 00:03:19,385
документ и посмотреть, как вложенные документы могут быть сохранены в нашей базе данных.

42
00:03:19,385 --> 00:03:22,385
Итак, перейдя к файлу dishes.js,

43
00:03:22,385 --> 00:03:30,135
я собираюсь добавить другую схему в мой файл dishes.js, называемый

44
00:03:30,135 --> 00:03:37,360
как комментарий Schema, а

45
00:03:37,360 --> 00:03:42,230
затем определить это как новую схему.

46
00:03:42,320 --> 00:03:44,880
В этой схеме комментариев,

47
00:03:44,880 --> 00:03:46,895
как вы уже ожидали,

48
00:03:46,895 --> 00:03:51,360
мы будем использовать это для хранения комментариев о блюде.

49
00:03:51,360 --> 00:03:56,380
Таким образом, комментарии будут содержать поле рейтинга, которое

50
00:03:56,380 --> 00:04:02,930
имеет номер типа,

51
00:04:02,930 --> 00:04:07,250
и его минимальное значение - один,

52
00:04:07,250 --> 00:04:15,290
максимальное значение - пять и обязательно - истинно.

53
00:04:15,290 --> 00:04:20,120
Таким образом, вы можете видеть, что когда вы используете поле с номером типа,

54
00:04:20,120 --> 00:04:26,085
вы можете указать границы для него, если вы хотите.

55
00:04:26,085 --> 00:04:35,640
Затем следующее поле представляет собой поле комментария, которое будет иметь строку типа.

56
00:04:35,640 --> 00:04:41,780
Таким образом, это хранит сообщение, а затем

57
00:04:41,780 --> 00:04:49,300
требуется верно, а затем мы также добавим другое поле под названием author,

58
00:04:51,220 --> 00:05:01,120
которое имеет тип строки и обязательно является true.

59
00:05:01,120 --> 00:05:07,600
Мы также добавим поле timestamp для этого

60
00:05:07,600 --> 00:05:11,875
и установим это значение true.

61
00:05:11,875 --> 00:05:14,570
Таким образом, для каждого добавленного комментария

62
00:05:14,570 --> 00:05:17,570
мы также будем хранить соответствующую метку времени.

63
00:05:17,570 --> 00:05:20,990
Итак, теперь, когда мы объявили схему комментариев,

64
00:05:20,990 --> 00:05:27,465
мы можем затем перейти и изменить схему блюда, чтобы иметь возможность хранить комментарии.

65
00:05:27,465 --> 00:05:29,745
Таким образом, в схеме блюд,

66
00:05:29,745 --> 00:05:37,370
мы можем добавить в комментарии,

67
00:05:37,370 --> 00:05:44,750
которые являются массивом схемы комментариев типа,

68
00:05:44,750 --> 00:05:49,705
так что это означает, что каждый объект блюда,

69
00:05:49,705 --> 00:05:57,860
документ блюдо может иметь несколько комментариев, хранящихся в массиве внутри документа блюдо.

70
00:05:57,860 --> 00:06:04,830
Таким образом, это комментарии документы становятся вложенными документами внутри документа блюдо.

71
00:06:04,830 --> 00:06:08,524
Итак, мы храним все комментарии о блюде внутри

72
00:06:08,524 --> 00:06:13,765
самой тарелки в виде массива документов комментариев.

73
00:06:13,765 --> 00:06:20,825
Итак, это использование поддокумента в Mongoose.

74
00:06:20,825 --> 00:06:28,395
После этого давайте перейдем к файлу index.js, а затем изменим наш файл index.js.

75
00:06:28,395 --> 00:06:32,640
Здесь они создают блюдо так же, как и раньше.

76
00:06:32,640 --> 00:06:35,010
Затем после того, как мы создаем блюдо,

77
00:06:35,010 --> 00:06:38,715
затем мы консоли регистрируем блюдо.

78
00:06:38,715 --> 00:06:43,080
После этого мы обновим блюдо.

79
00:06:43,080 --> 00:06:49,925
Итак, мы скажем, блюда найти по ID и обновить.

80
00:06:49,925 --> 00:06:55,345
Итак, мы собираемся изменить блюдо, которое мы только что вставили на предыдущем шаге.

81
00:06:55,345 --> 00:06:58,690
Итак, мы скажем: «Найдите по идентификатору и обновите».

82
00:06:58,690 --> 00:07:01,930
И мы собираемся поставлять.

83
00:07:01,930 --> 00:07:05,305
При этом принимает два параметра,

84
00:07:05,305 --> 00:07:10,045
первым параметром является блюдо.

85
00:07:10,045 --> 00:07:15,205
Теперь, это блюдо. _id, конечно, относится к этому блюду, которое мы только что вставили,

86
00:07:15,205 --> 00:07:19,895
а затем мы собираемся изменить это же блюдо на следующем шаге.

87
00:07:19,895 --> 00:07:22,420
Итак, мы скажем: «Блюдо. _id.» А затем,

88
00:07:22,420 --> 00:07:34,610
в скобках, мы указываем $set, описание,

89
00:07:36,600 --> 00:07:45,580
обновленный тест и new true.

90
00:07:45,580 --> 00:07:49,240
Итак, это, мы модифицируем блюдо, которое мы

91
00:07:49,240 --> 00:07:54,865
только что вставили, обновляя его описание там.

92
00:07:54,865 --> 00:07:58,735
Теперь это должно быть заключено внутри.

93
00:07:58,735 --> 00:08:01,310
Этот второй флаг, который мы поставляем здесь,

94
00:08:01,310 --> 00:08:03,985
новый двоеточие равен true,

95
00:08:03,985 --> 00:08:07,895
означает, что как только обновление блюда

96
00:08:07,895 --> 00:08:11,075
будет завершено, то это вернет блюдо,

97
00:08:11,075 --> 00:08:14,530
обновленное блюдо обратно к нам.

98
00:08:14,530 --> 00:08:20,350
Итак, вот причина использования этого флага здесь, скажем, новая правда.

99
00:08:20,350 --> 00:08:25,275
Таким образом, это блюдо будет возвращено на следующем шаге.

100
00:08:25,275 --> 00:08:32,905
Итак, мы возьмем это блюдо, а потом распечатаем это блюдо.

101
00:08:32,905 --> 00:08:34,540
Итак, на следующем шаге

102
00:08:34,540 --> 00:08:41,845
мы изменим это и скажем: «Это, потом блюдо».

103
00:08:41,845 --> 00:08:45,790
А потом мы сделаем консольный журнал тарелок.

104
00:08:45,790 --> 00:08:55,060
После этого, мы собираемся вставить комментарий в блюдо.

105
00:08:55,060 --> 00:09:00,405
Итак, мы скажем: «Dish.comments.Push».

106
00:09:00,405 --> 00:09:04,420
Напомним, что комментарии — это поле внутри тарелки.

107
00:09:04,420 --> 00:09:06,930
Итак, возвращаясь к схеме,

108
00:09:06,930 --> 00:09:12,685
мы видим, что эти комментарии являются массивом типа CommentSchema.

109
00:09:12,685 --> 00:09:16,360
Итак, что означает, что мы можем нажать элемент в этот массив.

110
00:09:16,360 --> 00:09:17,700
Итак, возвращаясь сюда,

111
00:09:17,700 --> 00:09:21,180
мы скажем: «Блюдо комментарии толкают».

112
00:09:21,180 --> 00:09:27,380
А потом мы вложим в блюдо документ с комментариями.

113
00:09:27,380 --> 00:09:31,415
Итак, я скажу: «Блюдо комментарии толкать».

114
00:09:31,415 --> 00:09:33,990
И укажите поля здесь.

115
00:09:33,990 --> 00:10:00,540
Итак, скажем: «Рейтинг пять, комментарий и автор».

116
00:10:07,890 --> 00:10:17,155
Таким образом, это подтолкнет этот комментарий в поле комментариев этого конкретного блюда.

117
00:10:17,155 --> 00:10:20,065
Итак, теперь, когда мы изменили блюдо,

118
00:10:20,065 --> 00:10:24,655
следующий шаг, который мы собираемся сделать, это,

119
00:10:24,655 --> 00:10:30,030
позвольте мне закрыть это, а затем положить его в него, затем туда.

120
00:10:30,030 --> 00:10:32,400
Я вернусь и починю это через короткое время.

121
00:10:32,400 --> 00:10:34,555
Итак, теперь, когда мы модифицировали блюдо,

122
00:10:34,555 --> 00:10:37,630
нам нужно сохранить блюдо.

123
00:10:37,630 --> 00:10:42,430
Итак, мы скажем: «Возвращайте блюдо в целости».

124
00:10:42,430 --> 00:10:44,280
Итак, на этом шаге

125
00:10:44,280 --> 00:10:47,520
мы вставляем комментарий в блюдо, блюдо,

126
00:10:47,520 --> 00:10:51,055
которое мы только что создали и обновили,

127
00:10:51,055 --> 00:10:55,360
а затем мы сохраняем

128
00:10:55,360 --> 00:11:00,350
этот комментарий; и затем, это вернет блюдо.

129
00:11:00,350 --> 00:11:07,480
И когда блюдо будет возвращено в следующий обратный звонок,

130
00:11:07,480 --> 00:11:15,160
я скажу: «Консольное блюдо».

131
00:11:15,160 --> 00:11:16,240
А потом, после этого,

132
00:11:16,240 --> 00:11:17,920
мы скажем: «Возвращайся».

133
00:11:17,920 --> 00:11:22,435
Таким образом, с этим мы изменили наш файл index.js.

134
00:11:22,435 --> 00:11:27,265
Давайте сохраним изменения и посмотрим на это приложение.

135
00:11:27,265 --> 00:11:29,135
Перейдя к терминалу,

136
00:11:29,135 --> 00:11:34,770
давайте запустим npm start, а затем посмотрим полученное значение здесь.

137
00:11:34,770 --> 00:11:38,570
Итак, возвращаясь назад, мы видим, что на первом шаге

138
00:11:38,570 --> 00:11:45,430
мы создали здесь это блюдо с именем и описанием, как мы дали ранее.

139
00:11:45,430 --> 00:11:49,675
А потом, как только блюдо будет создано,

140
00:11:49,675 --> 00:11:50,980
на втором шаге

141
00:11:50,980 --> 00:11:55,730
мы обновили блюдо, а затем распечатали обновленную версию блюда.

142
00:11:55,730 --> 00:11:59,325
Итак, обновленная версия блюда распечатывается прямо там.

143
00:11:59,325 --> 00:12:03,940
И вы можете видеть, что описание было обновлено от предыдущего случая,

144
00:12:03,940 --> 00:12:10,210
но идентификатор остается точно таким же, как блюдо, которое мы создали ранее.

145
00:12:10,210 --> 00:12:11,720
И поле комментариев,

146
00:12:11,720 --> 00:12:12,875
как вы можете видеть здесь,

147
00:12:12,875 --> 00:12:15,150
является пустым массивом и курящим.

148
00:12:15,150 --> 00:12:22,555
На третьем шаге мы нажимаем комментарий в наше блюдо здесь;

149
00:12:22,555 --> 00:12:25,560
и затем, этот конкретный комментарий, который

150
00:12:25,560 --> 00:12:28,880
мы добавили, был добавлен в этот массив комментариев.

151
00:12:28,880 --> 00:12:32,475
Итак, вы можете увидеть этот комментарий прилагается здесь,

152
00:12:32,475 --> 00:12:39,440
и это обновленное блюдо, которое теперь напечатано на экране здесь.

153
00:12:39,440 --> 00:12:45,270
Итак, вы можете видеть, что мы сделали несколько шагов один за другим с нашим блюдом.

154
00:12:45,270 --> 00:12:46,840
Сначала мы создали блюдо,

155
00:12:46,840 --> 00:12:48,460
затем обновили блюдо,

156
00:12:48,460 --> 00:12:51,340
затем мы вставили комментарий в блюдо,

157
00:12:51,340 --> 00:12:55,745
который является вложенным документом внутри документа блюдо

158
00:12:55,745 --> 00:12:59,035
, а затем мы распечатали вам результат.

159
00:12:59,035 --> 00:13:02,390
С этим мы завершаем это упражнение.

160
00:13:02,390 --> 00:13:06,500
В этом упражнении мы видели, как мы можем

161
00:13:06,500 --> 00:13:10,930
, во-первых, создать блюдо с помощью блюд создать,

162
00:13:10,930 --> 00:13:14,520
затем мы увидели использование поддокументов: там,

163
00:13:14,520 --> 00:13:18,060
мы определили схему в

164
00:13:18,060 --> 00:13:21,720
файле dishes.js, а затем использовать схему комментария, которую мы определили, а

165
00:13:21,720 --> 00:13:29,130
затем определили поле в схеме блюд как типа CommentSchema.

166
00:13:29,130 --> 00:13:32,810
А затем, в файле index.js,

167
00:13:32,810 --> 00:13:35,445
мы смогли создать блюдо,

168
00:13:35,445 --> 00:13:38,210
обновить блюдо, а также нажать

169
00:13:38,210 --> 00:13:44,140
документ с комментариями в блюдо, а затем сохранить изменения здесь.

170
00:13:44,140 --> 00:13:46,480
С этим мы завершаем это упражнение.

171
00:13:46,480 --> 00:13:54,170
Это хорошее время для вас сделать Git Kermit с сообщением «Мангуста часть третья».