1
00:00:03,680 --> 00:00:06,035
Trong bài học trước,

2
00:00:06,035 --> 00:00:08,550
chúng tôi đã học về trình điều khiển MongoDB.

3
00:00:08,550 --> 00:00:14,250
Điều đó cho phép ứng dụng nút của chúng tôi giao tiếp với một máy chủ MongoDB,

4
00:00:14,250 --> 00:00:19,660
và cũng lưu trữ và truy xuất tài liệu từ máy chủ MongoDB.

5
00:00:19,660 --> 00:00:23,310
Chúng tôi cũng thấy rằng trình điều khiển MongoDB cung cấp

6
00:00:23,310 --> 00:00:28,770
cho chúng tôi nhiều phương pháp cho phép chúng tôi tạo ra các bộ sưu tập trong một cơ sở dữ liệu,

7
00:00:28,770 --> 00:00:30,925
thêm tài liệu vào các bộ sưu tập,

8
00:00:30,925 --> 00:00:35,695
và sau đó thực hiện các thao tác khác nhau trên các tài liệu trong một bộ sưu tập.

9
00:00:35,695 --> 00:00:41,060
Bây giờ, khi các tài liệu được lưu trữ trong cơ sở dữ liệu,

10
00:00:41,060 --> 00:00:46,330
trình điều khiển MongoDB tự nó áp đặt không có cấu trúc trên các tài liệu.

11
00:00:46,330 --> 00:00:52,640
Nếu chúng ta cần phải có cấu trúc cụ thể cho các tài liệu và thực thi cấu trúc đó,

12
00:00:52,640 --> 00:00:58,505
thì chúng ta cần phải sử dụng mô-đun nút Mongoose cho phép chúng ta xác định

13
00:00:58,505 --> 00:01:05,015
một lược đồ và một cấu trúc cho các tài liệu của chúng tôi được lưu trữ trong cơ sở dữ liệu MongoDB của chúng tôi,

14
00:01:05,015 --> 00:01:08,275
và thực thi chặt chẽ cấu trúc.

15
00:01:08,275 --> 00:01:16,035
Chúng ta hãy xem xét thêm chi tiết trong bài giảng này và các bài tập theo sau bài giảng này.

16
00:01:16,035 --> 00:01:18,540
Như chúng ta đã biết,

17
00:01:18,540 --> 00:01:25,035
MongoDB lưu trữ dữ liệu trong các bộ sưu tập trong một cơ sở dữ liệu.

18
00:01:25,035 --> 00:01:28,695
Những bộ sưu tập này bao gồm một bộ sưu tập các tài liệu.

19
00:01:28,695 --> 00:01:30,750
Bản thân các tài liệu được lưu trữ trong

20
00:01:30,750 --> 00:01:35,405
một cơ sở dữ liệu MongoDB không có cấu trúc cụ thể nào áp đặt lên tài liệu.

21
00:01:35,405 --> 00:01:38,570
Bất kỳ tài liệu nào có thể được lưu trữ trong bất kỳ bộ sưu tập nào.

22
00:01:38,570 --> 00:01:46,370
MongoDB dựa vào nhà phát triển để thực thi cấu trúc trên các tài liệu,

23
00:01:46,370 --> 00:01:52,295
và đưa ra trách nhiệm hoàn toàn cho nhà phát triển để đảm bảo rằng các tài liệu

24
00:01:52,295 --> 00:01:58,670
của cấu trúc chính xác được thêm vào và duy trì trong các bộ sưu tập khác nhau.

25
00:01:58,670 --> 00:02:01,960
Bây giờ, nó là rất dễ dàng để vi phạm điều này.

26
00:02:01,960 --> 00:02:06,260
Vì vậy, ví dụ, mặc dù bạn có thể bắt đầu với giả định

27
00:02:06,260 --> 00:02:11,030
rằng một kết nối cụ thể sẽ có tài liệu của một cấu trúc nhất định,

28
00:02:11,030 --> 00:02:17,045
bạn có thể dễ dàng chèn tài liệu không nhất thiết phải tuân thủ cấu trúc.

29
00:02:17,045 --> 00:02:21,170
Nếu bạn rất đặc biệt rằng cấu trúc của các tài liệu trong

30
00:02:21,170 --> 00:02:25,550
một bộ sưu tập luôn có một cấu trúc cụ thể,

31
00:02:25,550 --> 00:02:28,550
và sẽ luôn luôn có tập hợp các trường cụ thể,

32
00:02:28,550 --> 00:02:32,540
sau đó MongoDB chính nó không áp đặt rằng cũng

33
00:02:32,540 --> 00:02:36,630
không trình điều khiển nút MongoDB mà chúng ta đã thấy trong bài học trước đó.

34
00:02:36,630 --> 00:02:40,565
Đây là nơi chúng ta sẽ cần một cách chính thức hơn để áp đặt

35
00:02:40,565 --> 00:02:46,385
cấu trúc trên các tài liệu được lưu trữ trong một bộ sưu tập trong một cơ sở dữ liệu MongoDB.

36
00:02:46,385 --> 00:02:52,390
Đây là nơi mà mô-đun nút Mongoose đến với sự giúp đỡ của chúng tôi.

37
00:02:52,390 --> 00:02:56,405
Mô-đun nút Mongoose áp đặt

38
00:02:56,405 --> 00:03:01,875
một cấu trúc chuẩn hóa cho các tài liệu được lưu trữ trong một bộ sưu tập cụ thể.

39
00:03:01,875 --> 00:03:07,175
Vì vậy, đó là lý do tại sao chúng tôi thường nghe mọi người đề cập đến điều này như là Mongoose OM.

40
00:03:07,175 --> 00:03:10,950
Bản thân OD được một số người hiểu là

41
00:03:10,950 --> 00:03:16,995
Mô hình Dữ liệu Đối tượng hoặc đôi khi được gọi là Đối tượng Document Mapping,

42
00:03:16,995 --> 00:03:22,125
hoặc một số người đề cập đến nó là ORM hoặc Object Relational Mapping.

43
00:03:22,125 --> 00:03:27,755
Bây giờ, khi chúng ta nói về quan hệ áp dụng nhiều hơn cho cơ sở dữ liệu quan hệ,

44
00:03:27,755 --> 00:03:33,380
nhưng sau đó với cơ sở dữ liệu SQL chúng ta cần một cách rõ ràng đối tượng để

45
00:03:33,380 --> 00:03:41,850
ánh xạ quan hệ để được đưa vào giữa cơ sở dữ liệu và ứng dụng của chúng ta.

46
00:03:41,850 --> 00:03:45,245
Bởi vì trong ứng dụng chúng ta sẽ xem xét các

47
00:03:45,245 --> 00:03:50,245
đối tượng nhưng lưu trữ của họ trong một cơ sở dữ liệu SQL sẽ ở dạng hồ sơ,

48
00:03:50,245 --> 00:03:52,585
và do đó bạn cần một ánh xạ rõ ràng.

49
00:03:52,585 --> 00:03:54,870
Như chúng ta đã thấy với cơ sở dữ liệu NoSQL,

50
00:03:54,870 --> 00:03:56,685
điều này không được yêu cầu rõ ràng.

51
00:03:56,685 --> 00:04:03,710
Nhưng nếu bạn cần phải áp đặt cấu trúc trên tài liệu của bạn được lưu trữ trong một bộ sưu tập

52
00:04:03,710 --> 00:04:10,790
thì việc sử dụng Mongoose để áp đặt cấu trúc này là rất, rất hữu ích.

53
00:04:10,790 --> 00:04:13,880
Cách Mongoose đi

54
00:04:13,880 --> 00:04:18,275
xung quanh áp đặt cấu trúc trên các tài liệu là thông qua việc sử dụng lược đồ.

55
00:04:18,275 --> 00:04:21,995
Schema, xác định cấu trúc của tài liệu của họ.

56
00:04:21,995 --> 00:04:24,800
Hãy nói về điều đó một chút chi tiết hơn.

57
00:04:24,800 --> 00:04:27,580
Vì vậy, những gì chính xác là lược đồ mongoose,

58
00:04:27,580 --> 00:04:29,700
và những gì nó mang lại cho bảng?

59
00:04:29,700 --> 00:04:34,700
Mongoose schema, ngụ ý một cấu trúc trên

60
00:04:34,700 --> 00:04:39,735
dữ liệu được lưu trữ trong một tài liệu trong cơ sở dữ liệu của bạn.

61
00:04:39,735 --> 00:04:42,770
Vì vậy, nó xác định tất cả các trường của tài liệu của bạn,

62
00:04:42,770 --> 00:04:45,349
và cũng xác định các loại của các trường,

63
00:04:45,349 --> 00:04:47,345
và cũng có thể cung cấp cho chúng tôi các

64
00:04:47,345 --> 00:04:51,965
tính năng bổ sung có thể cho phép xác thực trên các trường này.

65
00:04:51,965 --> 00:04:59,425
Vì vậy, ví dụ, các loại giản đồ khác nhau được hỗ trợ trong Mongoose bao gồm: Chuỗi

66
00:04:59,425 --> 00:05:03,195
, Số, Ngày, Bộ đệm, Boolean,

67
00:05:03,195 --> 00:05:06,295
hỗn hợp, đối tượng ID và mảng.

68
00:05:06,295 --> 00:05:09,070
Đặc biệt, chúng ta sẽ xem xét số chuỗi,

69
00:05:09,070 --> 00:05:14,405
và một ngày, và Boolean trong bài tập sau.

70
00:05:14,405 --> 00:05:18,075
Chúng ta sẽ xem xét một số trong những bài tập khác trong các bài tập sau này.

71
00:05:18,075 --> 00:05:22,125
Đặc biệt, chú ý việc sử dụng kiểu giản đồ mảng.

72
00:05:22,125 --> 00:05:25,570
Vì vậy, một kiểu giản đồ mảng sẽ cho phép bạn

73
00:05:25,570 --> 00:05:31,640
tạo ra một mảng các tài liệu phụ bên trong tài liệu.

74
00:05:31,640 --> 00:05:33,740
Tôi sẽ nói về điều đó trong một thời gian ngắn.

75
00:05:33,740 --> 00:05:36,940
Một khi bạn xác định một giản đồ,

76
00:05:36,960 --> 00:05:42,160
giản đồ sau đó được sử dụng trong Mongoose để tạo ra một hàm mô hình,

77
00:05:42,160 --> 00:05:49,830
và đó là những gì cho phép bạn xác định cấu trúc cho các tài liệu của bạn trong cơ sở dữ liệu.

78
00:05:49,830 --> 00:05:53,225
Bản thân Schemas có thể có làm tổ.

79
00:05:53,225 --> 00:05:58,490
Vì vậy, có nghĩa là bạn có thể có tài liệu phụ được kèm theo bên trong một tài liệu.

80
00:05:58,490 --> 00:06:01,519
Các tài liệu phụ thường được chứa

81
00:06:01,519 --> 00:06:04,890
hoặc thông qua chỉ định một lược đồ bổ sung,

82
00:06:04,890 --> 00:06:11,870
và sau đó xác định một trong các lĩnh vực của lược đồ để được tắt loại của lược đồ khác.

83
00:06:11,870 --> 00:06:15,215
Hoặc bạn thậm chí có thể đi với một mảng của một

84
00:06:15,215 --> 00:06:20,000
kiểu giản đồ khác trong một giản đồ thứ hai mà bạn xác định.

85
00:06:20,000 --> 00:06:24,930
Hãy xem một ví dụ để làm rõ một số trong số này một cách chi tiết hơn.

86
00:06:24,930 --> 00:06:32,010
Ví dụ này sẽ là từ bài tập mà bạn sẽ làm ngay sau bài giảng này.

87
00:06:32,010 --> 00:06:37,705
Trước khi tôi có thể nói về lược đồ và mô hình trong Mongoose, chúng ta

88
00:06:37,705 --> 00:06:41,310
hãy hiểu tại sao chúng ta sẽ cần điều đó.

89
00:06:41,310 --> 00:06:43,975
Nếu bạn đã thực hiện các góc trước,

90
00:06:43,975 --> 00:06:46,760
hoặc ion, hoặc khóa học kịch bản gốc,

91
00:06:46,760 --> 00:06:49,445
bạn đã thấy rằng chúng tôi đại diện cho

92
00:06:49,445 --> 00:06:55,565
dữ liệu khác nhau mà chúng tôi sử dụng trong các ứng dụng của chúng tôi dưới dạng chuỗi JSON.

93
00:06:55,565 --> 00:07:02,050
Vì vậy, trong ứng dụng của chúng tôi, chúng tôi xác định một bộ sưu tập được gọi là món ăn.

94
00:07:02,050 --> 00:07:03,770
Trong một bộ sưu tập món ăn,

95
00:07:03,770 --> 00:07:09,700
mỗi món ăn sẽ chứa một tập hợp các thuộc tính nhất định được định nghĩa dưới dạng chuỗi JSON,

96
00:07:09,700 --> 00:07:11,665
như bạn thấy trong ví dụ này ở đây.

97
00:07:11,665 --> 00:07:15,830
Vì vậy, các món ăn là một mảng các loại món ăn,

98
00:07:15,830 --> 00:07:18,605
và mỗi món ăn chính nó sẽ chứa một tên,

99
00:07:18,605 --> 00:07:20,290
một hình ảnh, một loại,

100
00:07:20,290 --> 00:07:22,015
một nhãn, và như vậy.

101
00:07:22,015 --> 00:07:26,360
Ngoài ra, bên trong tài liệu món ăn chính nó,

102
00:07:26,360 --> 00:07:32,830
bạn sẽ có ý kiến được lưu trữ như một mảng của một lần nữa, -

103
00:07:32,830 --> 00:07:38,240
tài liệu JSON có chứa các lĩnh vực cụ thể bước.

104
00:07:38,240 --> 00:07:39,750
Vì vậy, mỗi nhận xét, ví dụ,

105
00:07:39,750 --> 00:07:45,685
chứa một tác giả nhận xét xếp hạng và một trường ngày như bạn thấy trong ví dụ này ở đây.

106
00:07:45,685 --> 00:07:49,215
Vì vậy, bạn thấy rằng có một cấu trúc rõ ràng cho

107
00:07:49,215 --> 00:07:55,230
mỗi tài liệu xác định một món ăn được lưu trữ trong cơ sở dữ liệu của chúng tôi.

108
00:07:55,230 --> 00:08:02,545
Nhiều món ăn rõ ràng sẽ được lưu trữ dưới dạng một bộ sưu tập trong cơ sở dữ liệu của chúng tôi,

109
00:08:02,545 --> 00:08:06,655
và có thể được nhóm lại với nhau và gửi qua như một mảng các

110
00:08:06,655 --> 00:08:11,165
món ăn cho ứng dụng khách hàng của chúng tôi để được sử dụng.

111
00:08:11,165 --> 00:08:14,890
Bây giờ chúng ta đã hiểu làm thế nào điều này được định nghĩa, bây giờ,

112
00:08:14,890 --> 00:08:22,000
làm thế nào để điều này liên quan đến lược đồ Mongoose và mô hình mà chúng ta xác định trong Mongoose?

113
00:08:22,000 --> 00:08:27,460
Bây giờ, lưu ý cấu trúc của một tài liệu món ăn điển hình ở đây.

114
00:08:27,460 --> 00:08:34,095
Vì vậy, điều này có thể dễ dàng ánh xạ vào một tài liệu MongoDB trong một bộ sưu tập,

115
00:08:34,095 --> 00:08:37,375
có lẽ được đặt tên là bộ sưu tập món ăn.

116
00:08:37,375 --> 00:08:42,605
Vì vậy, chúng ta thấy rằng có một cấu trúc rõ ràng cho chính tài liệu.

117
00:08:42,605 --> 00:08:50,320
Bây giờ, làm thế nào để chúng ta phản ánh điều này trong một lược đồ trong ứng dụng Mongoose của chúng tôi?

118
00:08:50,320 --> 00:08:54,095
Như bạn sẽ học trong bài tập,

119
00:08:54,095 --> 00:08:57,900
chúng ta sẽ thấy rằng chúng ta sẽ xác định lược đồ trong Mongoose.

120
00:08:57,900 --> 00:09:03,085
Vì vậy, giản đồ được định nghĩa là một giản đồ Mongoose ở đây.

121
00:09:03,085 --> 00:09:08,055
Ví dụ, một CommentSchema được hiển thị ở đây.

122
00:09:08,055 --> 00:09:09,925
CommentSchema, như bạn có thể thấy,

123
00:09:09,925 --> 00:09:13,885
chứa ba lĩnh vực khác nhau: đánh giá, bình luận

124
00:09:13,885 --> 00:09:15,445
và lĩnh vực tác giả,

125
00:09:15,445 --> 00:09:18,745
và cũng dấu thời gian ở đây.

126
00:09:18,745 --> 00:09:23,560
Dấu thời gian cho phép bạn có hai trường khác nhau

127
00:09:23,560 --> 00:09:28,850
trong tài liệu: trường được tạo ra tại và trường được cập nhật tại,

128
00:09:28,850 --> 00:09:38,200
cả hai đều là dấu thời gian được lưu trữ dưới dạng chuỗi ngày ISO trong tài liệu.

129
00:09:38,200 --> 00:09:43,615
Bây giờ, bản thân đánh giá sẽ là một giá trị số nguyên.

130
00:09:43,615 --> 00:09:46,400
Vì vậy, trong thuật ngữ Mongoose,

131
00:09:46,400 --> 00:09:48,755
nó sẽ được lưu trữ dưới dạng một

132
00:09:48,755 --> 00:09:50,680
số, loại sẽ là một số.

133
00:09:50,680 --> 00:09:53,660
Bạn thậm chí có thể chỉ định giá trị tối thiểu và tối đa.

134
00:09:53,660 --> 00:09:57,190
Bạn cũng có thể chỉ định rằng trường cụ thể này là bắt buộc, do

135
00:09:57,190 --> 00:10:04,460
đó, có nghĩa là mọi tài liệu của loại nhận xét phải chứa một trường xếp hạng.

136
00:10:04,460 --> 00:10:07,370
Tương tự như vậy, bạn cũng có thể xác định một trường nhận xét,

137
00:10:07,370 --> 00:10:08,710
đó là của chuỗi loại.

138
00:10:08,710 --> 00:10:13,635
Vì vậy, rõ ràng, một nhận xét là không có gì ngoài một chuỗi có chứa một số thông tin,

139
00:10:13,635 --> 00:10:16,340
và điều này cũng có thể được định nghĩa là một trường bắt buộc,

140
00:10:16,340 --> 00:10:18,805
có nghĩa là mỗi tài liệu nên chứa một nhận xét,

141
00:10:18,805 --> 00:10:21,060
và cũng là một trường tác giả,

142
00:10:21,060 --> 00:10:22,800
mà cũng là của chuỗi loại.

143
00:10:22,800 --> 00:10:28,030
Vì vậy, bạn thấy rằng bằng cách xác định lược đồ này trong định dạng này.

144
00:10:28,030 --> 00:10:32,600
Như chúng ta đã học được trong các cuộc thảo luận trước đó một chút,

145
00:10:32,600 --> 00:10:41,890
giản đồ được định nghĩa bằng cách sử dụng các loại khác nhau mà chúng ta có trong ứng dụng Mongoose của chúng tôi.

146
00:10:41,890 --> 00:10:43,030
Vì vậy, trong lược đồ, một lần nữa,

147
00:10:43,030 --> 00:10:44,900
bạn thấy ba lĩnh vực khác nhau ở đây,

148
00:10:44,900 --> 00:10:47,135
đánh giá, bình luận và tác giả ở đây,

149
00:10:47,135 --> 00:10:50,665
và mỗi trong số đó có một loại cụ thể được đưa ra,

150
00:10:50,665 --> 00:10:53,060
và sau đó cho dù điều này là bắt buộc hay không.

151
00:10:53,060 --> 00:10:56,505
Vì vậy, do đó, bạn đang áp đặt một cấu trúc nghiêm ngặt

152
00:10:56,505 --> 00:11:01,320
trên các tài liệu nhận xét sẽ được lưu trữ trong ứng dụng của bạn.

153
00:11:01,320 --> 00:11:05,255
Bây giờ chúng tôi đã xác định một lược đồ bình luận, chúng tôi có thể sau đó,

154
00:11:05,255 --> 00:11:12,254
như bạn nhận thấy từ ví dụ về loại dữ liệu mà chúng tôi yêu cầu trong ứng dụng của chúng

155
00:11:12,254 --> 00:11:15,000
tôi, chúng tôi có một tài liệu món ăn chính nó.

156
00:11:15,000 --> 00:11:17,620
Tài liệu món ăn chứa các lĩnh vực khác nhau.

157
00:11:17,620 --> 00:11:19,050
Ở đây, trong bài tập,

158
00:11:19,050 --> 00:11:23,355
trước tiên chúng tôi sẽ giới thiệu chỉ hai lĩnh vực vào tài liệu món ăn

159
00:11:23,355 --> 00:11:25,370
, tên và mô tả.

160
00:11:25,370 --> 00:11:27,010
Trong bài học tiếp theo,

161
00:11:27,010 --> 00:11:32,330
chúng tôi sẽ giới thiệu các trường còn lại cho DishSchema.

162
00:11:32,330 --> 00:11:33,680
Bây giờ, vì vậy tên,

163
00:11:33,680 --> 00:11:35,440
như trong trường hợp này,

164
00:11:35,440 --> 00:11:36,765
là của chuỗi loại.

165
00:11:36,765 --> 00:11:39,450
Chúng ta cũng có thể xác định rằng đây là trường bắt buộc, có

166
00:11:39,450 --> 00:11:43,360
nghĩa là mọi tài liệu phải chứa trường tên.

167
00:11:43,360 --> 00:11:46,385
Chúng ta cũng có thể xác định rằng trường tên là duy nhất, có

168
00:11:46,385 --> 00:11:53,215
nghĩa là không có hai tài liệu có thể có chính xác cùng một giá trị tên trong tài liệu.

169
00:11:53,215 --> 00:11:55,980
Vì vậy, điều đó đảm bảo rằng mỗi tài liệu sẽ có

170
00:11:55,980 --> 00:12:01,300
một trường tên duy nhất trong đó và một trường mô tả,

171
00:12:01,300 --> 00:12:03,115
mà là một lần nữa của chuỗi loại,

172
00:12:03,115 --> 00:12:06,460
nhưng cũng được chỉ định theo yêu cầu.

173
00:12:06,460 --> 00:12:10,010
Bây giờ, như chúng ta đã thấy trong ví dụ,

174
00:12:10,010 --> 00:12:15,750
một tài liệu món ăn chứa nhiều ý kiến kèm theo bên trong tài liệu.

175
00:12:15,750 --> 00:12:20,920
Bây giờ, trong Mongoose, điều này được hỗ trợ thông qua việc sử dụng các tài liệu phụ.

176
00:12:20,920 --> 00:12:24,230
Vì vậy, nếu bạn xác định một giản đồ trước đó,

177
00:12:24,230 --> 00:12:27,345
ví dụ, chúng tôi đã xác định một CommentSchema ở đây,

178
00:12:27,345 --> 00:12:33,370
bạn cũng có thể xác định một trường vào một giản đồ khác mà bạn xác

179
00:12:33,370 --> 00:12:36,240
định và sau đó xác định rằng trường đó sẽ

180
00:12:36,240 --> 00:12:39,520
thuộc loại giản đồ trước đó mà bạn đã xác định.

181
00:12:39,520 --> 00:12:40,960
Vì vậy, trong trường hợp này,

182
00:12:40,960 --> 00:12:44,360
trường ý kiến, tôi xác định nó như là một mảng,

183
00:12:44,360 --> 00:12:51,545
vì vậy bạn thấy việc sử dụng một loại mảng trong lược đồ của bạn mà bạn đang xác định ở đây,

184
00:12:51,545 --> 00:12:55,110
và sau đó mảng của các loại CommentSchema.

185
00:12:55,110 --> 00:13:00,725
Vì vậy, đây là một mảng các ý kiến sẽ được bao gồm trong mỗi tài liệu món ăn.

186
00:13:00,725 --> 00:13:02,590
Vì vậy, do đó, bạn có thể có

187
00:13:02,590 --> 00:13:11,640
nhiều hơn một chú thích tiểu tài liệu kèm theo bên trong một tài liệu món ăn.

188
00:13:11,640 --> 00:13:16,080
Vì vậy, việc xác định cấu trúc như thế này cho phép chúng ta hỗ trợ

189
00:13:16,080 --> 00:13:20,950
cấu trúc chuỗi JSON tương ứng mà chúng ta đã xác định

190
00:13:20,950 --> 00:13:26,470
cho một tài liệu món ăn hoặc chúng ta đã thấy trong ví dụ trước đó.

191
00:13:26,470 --> 00:13:30,145
Bây giờ, một khi chúng ta xác định lược đồ,

192
00:13:30,145 --> 00:13:33,695
để tận dụng điều này trong ứng dụng của chúng

193
00:13:33,695 --> 00:13:38,600
tôi, chúng ta cần phải tạo ra một mô hình từ lược đồ đó mà chúng tôi vừa xác định.

194
00:13:38,600 --> 00:13:40,640
Vì vậy, trong ứng dụng của chúng

195
00:13:40,640 --> 00:13:45,320
tôi, chúng tôi sẽ xác định một mô hình Mongoose và xác định rằng các mô hình

196
00:13:45,320 --> 00:13:51,085
là tắt loại DishSchema trong ví dụ này.

197
00:13:51,085 --> 00:13:54,830
Không chỉ vậy, bạn cũng sẽ đặt tên cho mô hình ở đây.

198
00:13:54,830 --> 00:13:57,100
Vì vậy, khi bạn đặt tên cho mô hình ở đây,

199
00:13:57,100 --> 00:14:00,000
chúng tôi đang chỉ định tên như món ăn.

200
00:14:00,000 --> 00:14:03,860
Bây giờ, khi bạn sử dụng mô hình món ăn này trong

201
00:14:03,860 --> 00:14:07,870
ứng dụng nút của chúng tôi, nơi chúng tôi đang sử dụng Mongoose,

202
00:14:07,870 --> 00:14:15,280
sau đó điều này sẽ được chuyển đổi và ánh xạ vào một bộ sưu tập trong cơ sở dữ liệu MongoDB của tôi.

203
00:14:15,280 --> 00:14:18,885
Bộ sưu tập chính nó sẽ được đặt tên như các món ăn.

204
00:14:18,885 --> 00:14:23,355
Vì vậy, Mongoose tự động biết rằng khi bạn chỉ định một tên ở đây,

205
00:14:23,355 --> 00:14:27,990
nó sẽ tự động xây dựng số nhiều

206
00:14:27,990 --> 00:14:31,635
của tên đó và sau đó cung cấp cho bộ sưu tập tên,

207
00:14:31,635 --> 00:14:37,160
đó là số nhiều của tên mô hình mà bạn chỉ định trong ví dụ này ở đây.

208
00:14:37,160 --> 00:14:39,400
Vì vậy, khi tôi nói món ăn ở đây,

209
00:14:39,400 --> 00:14:42,620
sau đó Mongoose sẽ tự động ánh xạ này vào

210
00:14:42,620 --> 00:14:46,365
bộ sưu tập món ăn trong cơ sở dữ liệu MongoDB.

211
00:14:46,365 --> 00:14:53,385
Làm thế nào để nó biết làm thế nào để chuyển đổi tên số ít này thành một số nhiều?

212
00:14:53,385 --> 00:14:56,750
Mongoose tự động có một cơ chế tích hợp

213
00:14:56,750 --> 00:15:01,795
cho phép nó xây dựng các số nhiều của các từ tiếng Anh chuẩn.

214
00:15:01,795 --> 00:15:02,965
Vì vậy, nếu bạn nói món ăn,

215
00:15:02,965 --> 00:15:04,170
nó sẽ xây dựng các món ăn.

216
00:15:04,170 --> 00:15:08,880
Nếu bạn nói lãnh đạo, nó sẽ xây dựng số nhiều của nó như là lãnh đạo, và vân vân.

217
00:15:08,880 --> 00:15:13,250
Vì vậy, điều này đã được xây dựng vào mô-đun nút Mongoose.

218
00:15:13,250 --> 00:15:17,585
Vì vậy, đó là lý do tại sao khi tôi chỉ định điều này như là một loại mô hình món ăn,

219
00:15:17,585 --> 00:15:24,050
sau đó Mongoose sẽ xây dựng bộ sưu tập món ăn trong cơ sở dữ liệu MongoDB của tôi,

220
00:15:24,050 --> 00:15:27,155
và sau đó bộ sưu tập món ăn đó sẽ lưu trữ

221
00:15:27,155 --> 00:15:33,050
các tài liệu khác nhau của loại món ăn trong đó.

222
00:15:33,050 --> 00:15:35,780
Một khi chúng tôi đã tạo ra rằng, thông thường,

223
00:15:35,780 --> 00:15:38,150
khi chúng tôi khai báo mô hình trong ứng dụng của

224
00:15:38,150 --> 00:15:43,780
chúng tôi, chúng tôi sẽ lưu trữ chúng trong một thư mục con tên mô hình, chỉ để thuận tiện.

225
00:15:43,780 --> 00:15:44,900
Bạn không cần phải làm điều đó,

226
00:15:44,900 --> 00:15:47,320
nhưng chỉ để tổ chức ứng dụng của bạn,

227
00:15:47,320 --> 00:15:50,635
chúng tôi thường sẽ lưu trữ nó trong một thư mục có tên là model.

228
00:15:50,635 --> 00:15:55,010
Sau đó, giản đồ và mô hình sẽ được

229
00:15:55,010 --> 00:15:59,470
định nghĩa trong một tập tin như thế này như bạn thấy trong ví dụ ở đây,

230
00:15:59,470 --> 00:16:05,230
điều này được gọi là dishes.js, và sau đó điều này sẽ được xuất khẩu bởi vì đây là một mô-đun nút.

231
00:16:05,230 --> 00:16:10,970
Điều này sẽ được xuất khẩu từ tập tin này để nó có thể được bao gồm vào các ứng dụng nút,

232
00:16:10,970 --> 00:16:13,100
nơi chúng tôi sẽ làm cho việc sử dụng

233
00:16:13,100 --> 00:16:16,620
lược đồ này và mô hình mà chúng tôi vừa xác định ở đây.

234
00:16:16,620 --> 00:16:20,540
Với sự hiểu biết nhanh chóng này về giản đồ và mô hình và việc

235
00:16:20,540 --> 00:16:26,370
sử dụng nó trong việc xác định cấu trúc cho một tài liệu mà chúng ta lưu trữ trong một MongoDB, chúng ta

236
00:16:26,370 --> 00:16:33,510
hãy trở lại và hiểu thêm một chút về những gì Mongoose cung cấp cho chúng ta.

237
00:16:33,510 --> 00:16:39,965
Ngoài ra, Mongoose cho phép chúng ta thiết lập kết nối với máy chủ MongoDB.

238
00:16:39,965 --> 00:16:43,070
Mongoose nội bộ sử dụng

239
00:16:43,070 --> 00:16:46,495
trình điều khiển MongoDB mà chúng tôi đã sử dụng trong bài tập trước đó.

240
00:16:46,495 --> 00:16:49,745
Vì vậy, Mongoose phụ thuộc vào trình điều khiển MongoDB, vì vậy,

241
00:16:49,745 --> 00:16:53,824
có nghĩa là từ ứng dụng nút dựa trên Mongoose của

242
00:16:53,824 --> 00:16:56,960
bạn, bạn có thể sử dụng tất cả các phương pháp đã có

243
00:16:56,960 --> 00:17:01,040
sẵn từ trình điều khiển MongoDB cũng nếu bạn chọn,

244
00:17:01,040 --> 00:17:05,390
nhưng Mongoose chính nó có một bộ sưu tập riêng của các phương pháp mà chúng ta

245
00:17:05,390 --> 00:17:09,940
có thể làm sử dụng để tương tác với cơ sở dữ liệu MongoDB,

246
00:17:09,940 --> 00:17:13,645
như chúng ta sẽ thấy trong bài tập đó sau.

247
00:17:13,645 --> 00:17:19,040
Hãy để tôi chỉ cho bạn một thời gian ngắn làm thế nào chúng tôi sẽ thiết lập một kết nối với cơ sở dữ liệu,

248
00:17:19,040 --> 00:17:21,590
và bạn sẽ làm điều này trong bài tập sau.

249
00:17:21,590 --> 00:17:25,280
Vì vậy, giống như chúng tôi tuyên bố URL trong trường hợp

250
00:17:25,280 --> 00:17:29,160
của ứng dụng nút MongoDB trong bài học trước đó,

251
00:17:29,160 --> 00:17:32,630
chúng tôi vẫn sẽ khai báo URL cho ứng dụng của chúng tôi.

252
00:17:32,630 --> 00:17:36,965
Sau đó chúng ta sẽ sử dụng phương thức kết nối Mongoose

253
00:17:36,965 --> 00:17:40,180
và cung cấp URL cho phương thức kết nối Mongoose,

254
00:17:40,180 --> 00:17:44,000
và điều này sẽ thiết lập kết nối đến cơ sở dữ liệu.

255
00:17:44,000 --> 00:17:48,590
Với sự hiểu biết nhanh chóng này về Mongoose và vai trò của Mongoose

256
00:17:48,590 --> 00:17:53,485
trong việc hỗ trợ chèn có cấu trúc

257
00:17:53,485 --> 00:17:58,985
, lưu trữ và truy xuất tài liệu từ MongoDB của chúng tôi, chúng ta

258
00:17:58,985 --> 00:18:02,180
hãy chuyển sang bài tập nơi chúng ta sẽ

259
00:18:02,180 --> 00:18:07,920
có được một số trải nghiệm thực hành bằng cách sử dụng mô-đun Mongoose.