1
00:00:03,710 --> 00:00:10,380
Теперь, когда у нас был краткий обзор Mongoose ODM и

2
00:00:10,380 --> 00:00:16,710
как Mongoose приносит схемы для структурирования документов, которые мы храним в нашем MongoDB,

3
00:00:16,710 --> 00:00:19,830
давайте посмотрим, как мы используем

4
00:00:19,830 --> 00:00:27,000
модуль узла Mongoose, а затем включить его в наше приложение узла.

5
00:00:27,000 --> 00:00:31,065
Затем используйте Mongoose для связи с

6
00:00:31,065 --> 00:00:35,760
нашим сервером MongoDB, а затем хранить и извлекать

7
00:00:35,760 --> 00:00:41,355
документы со структурой информации в документах.

8
00:00:41,355 --> 00:00:44,830
Чтобы начать работу с этим упражнением,

9
00:00:44,830 --> 00:00:48,080
перейдите в удобное место на компьютере.

10
00:00:48,080 --> 00:00:52,760
Итак, здесь я нахожусь в папке Node JS, где я хранил

11
00:00:52,760 --> 00:00:57,020
все примеры из этого курса, а затем я собираюсь

12
00:00:57,020 --> 00:01:02,210
создать новую папку с именем node Mongoose.

13
00:01:02,210 --> 00:01:10,320
Здесь мы создадим приложение узла с помощью Mongoose следующий.

14
00:01:10,320 --> 00:01:12,900
В терминале или окне команд

15
00:01:12,900 --> 00:01:19,080
перейдите в папку Mongoose узла, а затем инициализируйте приложение узла там.

16
00:01:19,080 --> 00:01:22,385
Итак, позвольте мне ввести npm init, а затем

17
00:01:22,385 --> 00:01:26,359
инициализировать приложение узла, а затем я назвал бы приложение

18
00:01:26,359 --> 00:01:34,174
как Node-Mongoose, а точка входа - index.js git история,

19
00:01:34,174 --> 00:01:42,590
ключевые слова, автор и лицензия, и мы скажем хорошо.

20
00:01:42,590 --> 00:01:49,574
После того, как ваш файл package.json создан,

21
00:01:49,574 --> 00:01:54,500
откройте проект в текстовом редакторе по вашему выбору.

22
00:01:54,500 --> 00:02:02,809
Итак, здесь у меня есть свой проект, открытый в Visual Studio.

23
00:02:02,809 --> 00:02:05,915
Позвольте мне войти в файл package.json, а затем добавить в

24
00:02:05,915 --> 00:02:14,750
сценарий запуска, а затем мы

25
00:02:14,750 --> 00:02:24,160
скажем, индекс начального узла, как обычно, всякий раз, когда мы начинаем с нового приложения узла.

26
00:02:24,160 --> 00:02:29,945
Затем, перейдя к терминалу или командному окну, давайте установим Mongoose.

27
00:02:29,945 --> 00:02:37,290
Таким образом, в командной строке введите npm install Mongoose, сохраните.

28
00:02:39,470 --> 00:02:45,570
Который на данный момент Мангуст 5.1.7.

29
00:02:45,570 --> 00:02:49,760
Итак, это версии, которые я собираюсь использовать в этом курсе.

30
00:02:49,760 --> 00:02:54,920
Затем перейдите в мое приложение в редакторе.

31
00:02:54,920 --> 00:03:01,430
Позвольте мне создать подпапку в проекте под названием «Модели».

32
00:03:01,430 --> 00:03:07,320
Итак, вот где я собираюсь хранить все модели для моего приложения.

33
00:03:07,340 --> 00:03:10,230
В папке моделей

34
00:03:10,230 --> 00:03:15,170
позвольте мне создать новый файл с именем dishes.js.

35
00:03:15,170 --> 00:03:19,535
Итак, здесь я собираюсь создать схему и модель

36
00:03:19,535 --> 00:03:24,680
для моего документа посуды, который я собираюсь хранить,

37
00:03:24,680 --> 00:03:29,770
коллекцию посуды, которая хранит документы для каждого блюда.

38
00:03:29,770 --> 00:03:36,730
Итак, прямо здесь, позвольте мне сначала импортировать Мангуст.

39
00:03:39,320 --> 00:03:47,880
Итак, мы потребуем Mongoose в этом файле, а затем скажем, что

40
00:03:47,880 --> 00:03:57,940
схема const - это схема Mongoose.

41
00:03:59,420 --> 00:04:03,510
Затем мы создадим схему здесь.

42
00:04:03,510 --> 00:04:13,845
Итак, мы скажем, const DishSchema новой схемы.

43
00:04:13,845 --> 00:04:19,590
Итак, здесь я определяю схему для моего блюда.

44
00:04:20,830 --> 00:04:27,270
Внутри этой схемы позвольте мне определить различные значения.

45
00:04:27,270 --> 00:04:29,830
Итак, я скажу имя,

46
00:04:29,890 --> 00:04:34,405
которое является типом String.

47
00:04:34,405 --> 00:04:41,480
Итак, это тип схемы, а затем это я бы объявил как требуется.

48
00:04:41,480 --> 00:04:43,460
Так что, я скажу «правда».

49
00:04:43,460 --> 00:04:52,790
Таким образом, каждый документ будет иметь имя в качестве обязательного поля там, а затем я

50
00:04:52,790 --> 00:04:57,185
также объявлю это как уникальное значение, что

51
00:04:57,185 --> 00:05:02,545
ни один из двух документов не должен иметь одно и то же поле имени.

52
00:05:02,545 --> 00:05:08,230
Итак, это первое поле в моем документе.

53
00:05:10,190 --> 00:05:19,440
Затем, мы также включим другое поле, называемое как, описание.

54
00:05:19,440 --> 00:05:29,205
Описание имеет тип строки и требуется true.

55
00:05:29,205 --> 00:05:35,165
Кроме того, мы можем иметь Mongoose автоматически вставлять

56
00:05:35,165 --> 00:05:41,639
временные метки в нашу модель.

57
00:05:41,639 --> 00:05:50,340
Итак, прямо там мы можем просто установить флаги времени: true.

58
00:05:50,340 --> 00:05:55,810
Таким образом, это автоматически добавит созданные и обновленные на,

59
00:05:55,810 --> 00:06:01,340
две временные метки в каждый документ, который хранится

60
00:06:01,340 --> 00:06:07,235
в нашем приложении, и он автоматически обновит эти значения.

61
00:06:07,235 --> 00:06:11,330
Всякий раз, когда мы обновляем документ и созданный в будет автоматически

62
00:06:11,330 --> 00:06:15,390
инициализирован, когда документ является первым создателем этого времени.

63
00:06:15,390 --> 00:06:22,680
После этого мы скажем var Блюда.

64
00:06:22,680 --> 00:06:24,549
Итак, учитывая схему,

65
00:06:24,549 --> 00:06:29,605
теперь мы собираемся построить модель из этой схемы.

66
00:06:29,605 --> 00:06:35,215
Итак, мы скажем, модель Mongoose

67
00:06:35,215 --> 00:06:43,570
и блюдо, и это будет использовать схему блюдо, которую мы только что объявили ранее.

68
00:06:43,570 --> 00:06:48,590
Затем мы будем экспортировать

69
00:06:48,590 --> 00:06:55,725
эту модель из этого файла здесь.

70
00:06:55,725 --> 00:06:58,410
Итак, скажем модуль экспорта блюд.

71
00:06:58,410 --> 00:07:00,545
Итак, теперь мы построили

72
00:07:00,545 --> 00:07:05,780
схему Mongoose и соответствующую модель, и модель теперь экспортируется отсюда.

73
00:07:05,780 --> 00:07:10,580
Таким образом, это можно импортировать в наше приложение и использовать.

74
00:07:10,580 --> 00:07:13,345
Итак, в нашей папке проекта

75
00:07:13,345 --> 00:07:20,415
позвольте мне создать новый файл с именем index.js.

76
00:07:20,415 --> 00:07:23,265
В файле index.js

77
00:07:23,265 --> 00:07:31,450
позвольте мне сначала потребовать Mongoose,

78
00:07:31,820 --> 00:07:34,900
а затем после этого мы можем сказать, что

79
00:07:34,900 --> 00:07:44,970
const Блюда требуют модели блюд.

80
00:07:44,970 --> 00:07:49,210
Потому что мы уже создали модель Блюда

81
00:07:49,210 --> 00:07:55,740
в файле блюд модели там и тогда мы требуем ее здесь.

82
00:07:55,740 --> 00:08:02,975
Теперь, чтобы установить соединение с сервером Mongo,

83
00:08:02,975 --> 00:08:09,330
мы скажем const URL mongodb.

84
00:08:09,840 --> 00:08:17,110
Локальный хост 27017, путаница.

85
00:08:17,110 --> 00:08:25,760
Таким образом, эта база данных является той, к которой мы будем подключаться из нашего приложения, а

86
00:08:25,760 --> 00:08:35,125
затем после этого мы можем установить соединение, сказав const connect Mongoose.

87
00:08:35,125 --> 00:08:38,195
Mongoose поддерживает этот метод подключения,

88
00:08:38,195 --> 00:08:41,695
который принимает URL-адрес в качестве первого параметра.

89
00:08:41,695 --> 00:08:44,250
Так что, как только мы установили это,

90
00:08:44,250 --> 00:08:49,470
тогда мы просто скажем, подключимся.

91
00:08:49,470 --> 00:08:52,280
Обратите внимание, что поскольку мы уже используем обещания,

92
00:08:52,280 --> 00:08:57,680
мы можем просто сказать connect тогда, а затем это будет принимать

93
00:08:57,680 --> 00:09:03,774
функцию в качестве параметра

94
00:09:03,774 --> 00:09:10,175
и внутри здесь мы теперь можем подключиться к базе данных.

95
00:09:10,175 --> 00:09:13,550
Итак, теперь, как только это соединение установлено,

96
00:09:13,550 --> 00:09:17,800
позвольте мне сделать журнал консоли,

97
00:09:17,800 --> 00:09:26,060
говорящий правильно подключен к серверу,

98
00:09:26,100 --> 00:09:36,355
и здесь я могу создать новое блюдо, сказав var

99
00:09:36,355 --> 00:09:45,560
new Dish, а затем Блюда и внутри здесь я могу указать документ, поэтому я создаю

100
00:09:45,560 --> 00:09:50,170
новое блюдо такого рода, а затем так здесь Я

101
00:09:50,170 --> 00:09:55,510
укажу два поля, которые являются обязательными.

102
00:09:55,510 --> 00:09:57,920
Так что я скажу имя,

103
00:10:07,950 --> 00:10:16,390
описание и так вот как вы создадите новое блюдо, а затем, как только мы создадим

104
00:10:16,390 --> 00:10:24,910
новое блюдо из модели, мы просто скажем новое блюдо сохранить.

105
00:10:24,910 --> 00:10:29,760
Метод сохранения приведет к тому, что значение Блюдо будет

106
00:10:29,760 --> 00:10:35,060
сохранено, а затем, как вы ожидаете, вернет обещание, а

107
00:10:35,060 --> 00:10:45,165
затем здесь мы получим значение Блюдо, как звонить туда, а затем, я

108
00:10:45,165 --> 00:10:54,940
могу просто записать значение Блюда здесь, а затем мы скажем,

109
00:10:54,940 --> 00:11:00,915
Блюда найти и поэтому мы найдем

110
00:11:00,915 --> 00:11:07,090
все Блюда, а затем сказать «exec».

111
00:11:07,090 --> 00:11:10,255
Exec гарантирует, что это

112
00:11:10,255 --> 00:11:15,250
выполняется и что он вернет обещание и так, что обещание

113
00:11:15,250 --> 00:11:19,660
будет возвращено, чтобы затем он мог

114
00:11:19,660 --> 00:11:27,040
связать метод с остальными.

115
00:11:27,040 --> 00:11:33,975
Таким образом, вы видите, как я использую обещания, а затем я вызываю предыдущий метод, чтобы он

116
00:11:33,975 --> 00:11:41,395
нашел все блюда в моей базе данных,

117
00:11:41,395 --> 00:11:45,905
в коллекции Блюда, а затем сделал его доступным для меня.

118
00:11:45,905 --> 00:11:55,550
Поэтому, когда я получаю блюда, я могу просто консоль регистрировать блюда, чтобы увидеть, что

119
00:11:55,550 --> 00:11:58,790
возвращается, и это, очевидно, на этом этапе должно

120
00:11:58,790 --> 00:12:02,710
вернуть это одно блюдо, которое я вставил в

121
00:12:02,710 --> 00:12:10,940
свою коллекцию посуды, а затем мы скажем, что

122
00:12:11,010 --> 00:12:15,550
возврат Блюда удалить с

123
00:12:15,550 --> 00:12:19,930
пустым объектом JavaScript который удалит все блюда из

124
00:12:19,930 --> 00:12:24,384
базы данных и вернет

125
00:12:24,384 --> 00:12:31,790
соединение mongoose, которое закрывает соединение с базой данных.

126
00:12:35,040 --> 00:12:38,830
И поймать любую ошибку в этот момент.

127
00:12:38,830 --> 00:12:49,430
Таким образом, мы будем использовать catch, а затем консольный журнал.

128
00:12:50,600 --> 00:12:57,820
Вот оно. То, что мы делаем здесь, мы создаем новое блюдо, а затем мы

129
00:12:57,820 --> 00:13:04,255
сохраняем блюдо, тогда мы находим все блюда из коллекции.

130
00:13:04,255 --> 00:13:06,740
Вот оно. Мы используем обещания здесь,

131
00:13:06,740 --> 00:13:10,435
так что мы приковали все болота здесь. Вот оно.

132
00:13:10,435 --> 00:13:15,595
Давайте сохраним изменения, а затем посмотрим, что это приложение выполняется.

133
00:13:15,595 --> 00:13:17,455
Перейдите в терминал, в

134
00:13:17,455 --> 00:13:21,505
командной строке введите npm start, и вы

135
00:13:21,505 --> 00:13:25,735
увидите, что мое приложение узла запускается, а затем оно показывает

136
00:13:25,735 --> 00:13:33,110
, во-первых, что он создал это конкретное блюдо.

137
00:13:33,110 --> 00:13:37,285
Обратите внимание, в частности, что эти два поля,

138
00:13:37,285 --> 00:13:39,365
обновленные и созданные в,

139
00:13:39,365 --> 00:13:43,465
эти две временные метки были автоматически добавлены в

140
00:13:43,465 --> 00:13:47,790
блюдо здесь, и поэтому вы можете видеть, что созданные на и

141
00:13:47,790 --> 00:13:51,630
обновленные в метках времени точно такие же в данный момент, а

142
00:13:51,630 --> 00:13:57,235
затем идентификатор также автоматически добавляется в.

143
00:13:57,235 --> 00:14:03,210
На следующем шаге мы распечатаем все блюда, которые были извлечены, и поэтому вы

144
00:14:03,210 --> 00:14:10,340
можете видеть, что это одно блюдо в коллекции,

145
00:14:10,340 --> 00:14:15,935
Посуда коллекции, и это то, что печатается на экране здесь.

146
00:14:15,935 --> 00:14:25,660
Давайте теперь инициализируем репозиторий Git, а затем давайте настроим полученный файл gitignore,

147
00:14:25,660 --> 00:14:35,125
так что перейдем в редактор, тогда мы создадим файл.gitignore, а затем добавим

148
00:14:35,125 --> 00:14:40,240
модули узлов в файл gitignore и сохраним изменения,

149
00:14:40,240 --> 00:14:45,325
а затем вернемся к подсказке, позвольте мне

150
00:14:45,325 --> 00:14:48,550
ввести статус git, и мы видим, что

151
00:14:48,550 --> 00:14:51,955
у нас есть эти файлы, которые не были проверены, поэтому мы скажем

152
00:14:51,955 --> 00:14:56,545
git add, а затем git

153
00:14:56,545 --> 00:15:04,535
commit сообщение Mongoose Part One.

154
00:15:04,535 --> 00:15:08,110
С этим мы завершаем это упражнение.

155
00:15:08,110 --> 00:15:14,300
В этом упражнении мы видели, как легко настроить приложение узла с

156
00:15:14,300 --> 00:15:21,335
mangoose и подключиться к нашему серверу MongoDB, а затем взаимодействовать с ним.

157
00:15:21,335 --> 00:15:24,985
Теперь, поскольку mongoose строится на сервере

158
00:15:24,985 --> 00:15:28,980
MongoDB, Mongoose может получить доступ ко всем различным методам

159
00:15:28,980 --> 00:15:32,690
, которые поддерживаются драйвером MongoDB.