Mô-đun Mongoose là một trong những mô-đun bên ngoài mạnh mẽ nhất của NodeJS. Mongoose là một MongoDB ODM tôi. e [Mô hình hóa cơ sở dữ liệu đối tượng] được sử dụng để dịch mã và biểu diễn của nó từ MongoDB sang Nút. máy chủ js
Ưu điểm của mô-đun Mongoose
- Việc xác thực bộ sưu tập của cơ sở dữ liệu MongoDB có thể được thực hiện dễ dàng
- Cấu trúc được xác định trước có thể được thực hiện trên bộ sưu tập
- Các ràng buộc có thể được áp dụng cho các tài liệu của các bộ sưu tập bằng Mongoose
- Mô-đun Mongoose được xây dựng trên đầu trình điều khiển MongoDB và cung cấp khả năng trừu tượng hóa truy vấn dễ dàng và xác định truy vấn
Nhiều developer có thói quen sử dụng SQL cảm thấy không thoải mái khi làm việc trên MongoDB vì cơ sở dữ liệu Nosql và cấu trúc linh hoạt. Ở đây Mongoose đóng vai trò quan trọng và làm cho lược đồ bộ sưu tập tương tự như cơ sở dữ liệu SQL
Mô-đun Mongoose cung cấp một số chức năng để thao tác với các tài liệu của bộ sưu tập cơ sở dữ liệu MongoDB
Triển khai cho cấu trúc xác định và Xác thực bộ sưu tập. Mô-đun cầy mangut đã áp đặt một cấu trúc nhất định lên bộ sưu tập và làm cho bộ sưu tập trở nên cứng nhắc
Mongoose là một khung JavaScript thường được sử dụng trong Node. js với cơ sở dữ liệu MongoDB. Trong bài viết này, tôi sẽ giới thiệu với bạn về Mongoose và MongoDB, và quan trọng hơn là nơi các công nghệ này phù hợp với ứng dụng của bạn
MongoDB là gì?
Hãy bắt đầu với MongoDB. MongoDB là cơ sở dữ liệu lưu trữ dữ liệu của bạn dưới dạng tài liệu. Hầu hết các tài liệu này giống với cấu trúc giống như JSON
1
{
2
firstName: "Jamie",
3
lastName: "Munro"
4
}
Một tài liệu sau đó được đặt trong một bộ sưu tập. Như một ví dụ, ví dụ tài liệu trên định nghĩa một đối tượng
}
55. Đối tượng }
55 này sau đó thường là một phần của bộ sưu tập có tên là }
57Một trong những yếu tố quan trọng với MongoDB là tính linh hoạt của nó khi nói đến cấu trúc. Mặc dù trong ví dụ đầu tiên, đối tượng
}
55 chứa thuộc tính }
59 và }
60, những thuộc tính này không bắt buộc phải có trong mọi tài liệu }
55 là một phần của bộ sưu tập }
57. Đây là điều làm cho MongoDB rất khác so với cơ sở dữ liệu SQL như MySQL hoặc Microsoft SQL Server yêu cầu một lược đồ cơ sở dữ liệu được xác định rõ ràng cho từng đối tượng mà nó lưu trữKhả năng tạo các đối tượng động được lưu trữ dưới dạng tài liệu trong cơ sở dữ liệu là nơi Mongoose phát huy tác dụng
Mongoose là gì?
Mongoose là Trình ánh xạ tài liệu đối tượng [ODM]. Điều này có nghĩa là Mongoose cho phép bạn xác định các đối tượng bằng lược đồ được đánh máy mạnh được ánh xạ tới tài liệu MongoDB
Mongoose cung cấp một lượng chức năng đáng kinh ngạc xung quanh việc tạo và làm việc với các lược đồ. Mongoose hiện có tám SchemaTypes mà một thuộc tính được lưu khi nó được lưu vào MongoDB. họ đang
- Chuỗi
- Số
- Ngày
- Đệm
- Boolean
- Trộn
- ID đối tượng
- Mảng
Mỗi loại dữ liệu cho phép bạn chỉ định
- một giá trị mặc định
- một chức năng xác nhận tùy chỉnh
- chỉ ra một lĩnh vực được yêu cầu
- một hàm get cho phép bạn thao tác dữ liệu trước khi nó được trả về dưới dạng một đối tượng
- một chức năng thiết lập cho phép bạn thao tác dữ liệu trước khi nó được lưu vào cơ sở dữ liệu
- tạo các chỉ mục để cho phép dữ liệu được tìm nạp nhanh hơn
Ngoài các tùy chọn phổ biến này, một số loại dữ liệu nhất định cho phép bạn tùy chỉnh thêm cách dữ liệu được lưu trữ và truy xuất từ cơ sở dữ liệu. Ví dụ: kiểu dữ liệu
}
63 cũng cho phép bạn chỉ định các tùy chọn bổ sung sau- chuyển đổi nó thành chữ thường
- chuyển đổi nó thành chữ hoa
- cắt dữ liệu trước khi lưu
- một biểu thức chính quy có thể giới hạn dữ liệu được phép lưu trong quá trình xác thực
- một enum có thể xác định danh sách các chuỗi hợp lệ
Các thuộc tính
}
64 và }
65 đều hỗ trợ chỉ định giá trị tối thiểu và tối đa được phép cho trường đóHầu hết trong số tám loại dữ liệu được phép sẽ khá quen thuộc với bạn. Tuy nhiên, có một số trường hợp ngoại lệ có thể khiến bạn bất ngờ, chẳng hạn như
}
66, }
67, }
68 và }
69Kiểu dữ liệu
}
66 cho phép bạn lưu dữ liệu nhị phân. Một ví dụ phổ biến về dữ liệu nhị phân sẽ là hình ảnh hoặc tệp được mã hóa, chẳng hạn như tài liệu PDFKiểu dữ liệu
}
67 biến thuộc tính thành trường "bất cứ điều gì xảy ra". Trường này giống với số lượng nhà phát triển có thể sử dụng MongoDB vì không có cấu trúc xác định. Hãy cảnh giác khi sử dụng loại dữ liệu này vì nó làm mất đi nhiều tính năng tuyệt vời mà Mongoose cung cấp, chẳng hạn như xác thực dữ liệu và phát hiện các thay đổi của thực thể để tự động biết để cập nhật thuộc tính khi lưuKiểu dữ liệu
}
68 thường chỉ định một liên kết đến một tài liệu khác trong cơ sở dữ liệu của bạn. Ví dụ: nếu bạn có một bộ sưu tập sách và tác giả, tài liệu sách có thể chứa thuộc tính }
68 đề cập đến tác giả cụ thể của tài liệuKiểu dữ liệu
}
69 cho phép bạn lưu trữ các mảng giống JavaScript. Với kiểu dữ liệu Mảng, bạn có thể thực hiện các thao tác mảng JavaScript phổ biến trên chúng, chẳng hạn như đẩy, bật, dịch chuyển, cắt lát, v.v.Tóm tắt nhanh
Trước khi tiếp tục và tạo một số mã, tôi chỉ muốn tóm tắt lại những gì chúng ta vừa học. MongoDB là một cơ sở dữ liệu cho phép bạn lưu trữ tài liệu với cấu trúc động. Những tài liệu này được lưu trong một bộ sưu tập
Mongoose là một thư viện JavaScript cho phép bạn xác định các lược đồ với dữ liệu được nhập mạnh. Khi một lược đồ được xác định, Mongoose cho phép bạn tạo Mô hình dựa trên một lược đồ cụ thể. Mô hình Mongoose sau đó được ánh xạ tới Tài liệu MongoDB thông qua định nghĩa lược đồ của Mô hình
Khi bạn đã xác định các lược đồ và mô hình của mình, Mongoose chứa nhiều hàm khác nhau cho phép bạn xác thực, lưu, xóa và truy vấn dữ liệu của mình bằng các hàm MongoDB phổ biến. Tôi sẽ nói về điều này nhiều hơn với các ví dụ mã cụ thể để làm theo
Cài đặt MongoDB
Trước khi chúng tôi có thể bắt đầu tạo các lược đồ và mô hình Mongoose của mình, MongoDB phải được cài đặt và định cấu hình. Tôi sẽ đề nghị đến thăm. Có một số tùy chọn khác nhau có sẵn để cài đặt. Tôi đã liên kết với Máy chủ Cộng đồng. Điều này cho phép bạn cài đặt phiên bản dành riêng cho hệ điều hành của mình. MongoDB cũng cung cấp Máy chủ doanh nghiệp và cài đặt hỗ trợ đám mây. Vì có thể viết toàn bộ sách về cách cài đặt, điều chỉnh và giám sát MongoDB, nên tôi sẽ gắn bó với Máy chủ Cộng đồng
Khi bạn đã tải xuống và cài đặt MongoDB cho hệ điều hành bạn chọn, bạn sẽ cần khởi động cơ sở dữ liệu. Thay vì phát minh lại bánh xe, tôi khuyên bạn nên truy cập tài liệu của MongoDB về cách cài đặt MongoDB Community Edition
Tôi sẽ đợi ở đây trong khi bạn định cấu hình MongoDB. Khi bạn đã sẵn sàng, chúng ta có thể chuyển sang thiết lập Mongoose để kết nối với cơ sở dữ liệu MongoDB mới cài đặt của bạn
Thiết lập Mongoose
Mongoose là một khung JavaScript và tôi sẽ sử dụng nó trong một Node. ứng dụng js. Nếu bạn đã có Nút. js được cài đặt, bạn có thể chuyển sang bước tiếp theo. Nếu bạn không có Nút. js, tôi khuyên bạn nên bắt đầu bằng cách truy cập Node. js và chọn trình cài đặt cho hệ điều hành của bạn
với nút. js đã được thiết lập và sẵn sàng hoạt động, tôi sẽ tạo một ứng dụng mới và sau đó cài đặt Gói NPM Mongoose
Với dấu nhắc lệnh được đặt ở nơi bạn muốn cài đặt ứng dụng của mình, bạn có thể chạy các lệnh sau
1
mkdir mongoose_basics
2
{
13
{
3Để khởi tạo ứng dụng của tôi, tôi để mọi thứ làm giá trị mặc định của chúng. Bây giờ tôi sẽ cài đặt gói cầy mangut như sau
1
{
5Với tất cả các điều kiện tiên quyết được định cấu hình, hãy kết nối với cơ sở dữ liệu MongoDB. Tôi đã đặt đoạn mã sau bên trong một chỉ mục. js vì tôi đã chọn đó làm điểm bắt đầu cho ứng dụng của mình
1
{
72
3
20
Dòng mã đầu tiên bao gồm thư viện
}
75. Tiếp theo, tôi mở một kết nối tới cơ sở dữ liệu mà tôi đã gọi là }
76 bằng cách sử dụng hàm }
77Hàm
}
77 chấp nhận hai tham số tùy chọn khác. Tham số thứ hai là một đối tượng của các tùy chọn nơi bạn có thể xác định những thứ như tên người dùng và mật khẩu, nếu cần. Tham số thứ ba, cũng có thể là tham số thứ hai nếu bạn không có tùy chọn nào, là chức năng gọi lại sau khi cố gắng kết nối. Chức năng gọi lại có thể được sử dụng theo một trong hai cách1
22_______2_______4_______
25
4
27
28
29
firstName: "Jamie",0
firstName: "Jamie",1
firstName: "Jamie",2
firstName: "Jamie",3
firstName: "Jamie",4
firstName: "Jamie",5
firstName: "Jamie",6
firstName: "Jamie",7
firstName: "Jamie",8__
firstName: "Jamie",9_______4_______0_______4_______1_______4_______2_______4_______3
Để tránh giới thiệu tiềm năng về Lời hứa JavaScript, tôi sẽ sử dụng cách đầu tiên. Dưới đây là một chỉ số cập nhật. tập tin js
1
{
72
3
38
4___
27
lastName: "Munro"1
29
firstName: "Jamie",0
lastName: "Munro"4
firstName: "Jamie",2
firstName: "Jamie",3
28
Nếu xảy ra lỗi khi kết nối với cơ sở dữ liệu, ngoại lệ sẽ được đưa ra và tất cả quá trình xử lý tiếp theo sẽ bị dừng. Khi không có lỗi xảy ra, tôi đã ghi thông báo thành công vào bảng điều khiển
Mongoose hiện đã được thiết lập và kết nối với cơ sở dữ liệu có tên là
}
76. Kết nối MongoDB của tôi không sử dụng tên người dùng, mật khẩu hoặc cổng tùy chỉnh. Nếu bạn cần đặt các tùy chọn này hoặc bất kỳ tùy chọn nào khác trong khi kết nối, tôi khuyên bạn nên xem lại Tài liệu Mongoose về kết nối. Tài liệu này cung cấp giải thích chi tiết về nhiều tùy chọn có sẵn cũng như cách tạo nhiều kết nối, tổng hợp kết nối, bản sao, v.v.Với kết nối thành công, hãy chuyển sang xác định Lược đồ Mongoose
Xác định lược đồ Mongoose
Trong phần giới thiệu, tôi đã cho thấy một đối tượng
}
55 chứa hai thuộc tính. }
59 và }
60. Trong ví dụ sau, tôi đã dịch tài liệu đó thành Mongoose Schema1
lastName: "Munro"9_______2_______
41_______4_______
43
4
28
Đây là một Lược đồ rất cơ bản chỉ chứa hai thuộc tính không có thuộc tính nào được liên kết với nó. Hãy mở rộng ví dụ này bằng cách chuyển đổi các thuộc tính tên và họ thành các đối tượng con của thuộc tính
}
83. Tài sản }
83 sẽ bao gồm cả họ và tên. Tôi cũng sẽ thêm thuộc tính }
85 thuộc loại }
651
lastName: "Munro"9_______2_______
49_______4_______
}
147_______3_______2_______7
}
5_______2_______9}
7firstName: "Jamie",0
28
Như bạn có thể thấy, Mongoose cho phép tôi tạo các lược đồ rất linh hoạt với nhiều cách kết hợp khả thi khác nhau về cách tôi có thể tổ chức dữ liệu của mình
Trong ví dụ tiếp theo này, tôi sẽ tạo hai lược đồ mới sẽ trình bày cách tạo mối quan hệ với một lược đồ khác.
}
87 và }
88. Lược đồ }
88 sẽ chứa một tham chiếu đến lược đồ }
871
11
2
13
3
49
4
17
27
19
29
mkdir mongoose_basics
1firstName: "Jamie",0
mkdir mongoose_basics
3firstName: "Jamie",2
mkdir mongoose_basics
5firstName: "Jamie",3
mkdir mongoose_basics
7firstName: "Jamie",5
mkdir mongoose_basics
9firstName: "Jamie",6
{
01firstName: "Jamie",8
{
03firstName: "Jamie",9
{
0531
{
0732
{
09{
1028
Trên đây là lược đồ
}
87 mở rộng dựa trên các khái niệm của lược đồ }
55 mà tôi đã tạo trong ví dụ trước. Để liên kết Tác giả và Sách với nhau, thuộc tính đầu tiên của lược đồ }
87 là thuộc tính }
94 thuộc loại lược đồ }
68. }
94 là cú pháp phổ biến để tạo khóa chính trong Mongoose và MongoDB. Sau đó, giống như lược đồ }
55, tôi đã xác định một thuộc tính }
83 chứa họ và tên của tác giả. Mở rộng dựa trên lược đồ
}
55, }
87 chứa một số loại lược đồ }
63 khác. Tôi cũng đã thêm một loại lược đồ }
66 có thể chứa ảnh hồ sơ của tác giả. Thuộc tính cuối cùng chứa ngày tạo của tác giả; . Khi một tác giả được duy trì trong cơ sở dữ liệu, thuộc tính này sẽ được đặt thành ngày/giờ hiện tạiĐể hoàn thành các ví dụ về lược đồ, hãy tạo một lược đồ
}
88 chứa tham chiếu đến tác giả bằng cách sử dụng loại lược đồ }
681
{
132
13
3
{
174
{
1927
{
2129
{
23firstName: "Jamie",0
{
25firstName: "Jamie",2
{
27firstName: "Jamie",3
{
29firstName: "Jamie",5
}
5firstName: "Jamie",6
{
33firstName: "Jamie",8
{
35firstName: "Jamie",9
{
3731
{
3932
{
41{
10{
43{
44{
45{
46{
47{
48{
49{
50{
51{
52{
53{
54{
03{
56{
05{
58{
07{
60{
09{
6228
Lược đồ
}
88 chứa một số thuộc tính kiểu }
63. Như đã đề cập ở trên, nó chứa một tham chiếu đến lược đồ }
87. Để chứng minh thêm các định nghĩa lược đồ mạnh mẽ, lược đồ }
88 cũng chứa một }
69 của 110. Mỗi xếp hạng bao gồm một thuộc tính ngày tháng
111,
112,
113, và
}
85Mongoose cho phép bạn linh hoạt tạo các lược đồ có tham chiếu đến các lược đồ khác hoặc, như trong ví dụ trên với thuộc tính
110, nó cho phép bạn tạo một
}
69 thuộc tính con có thể được chứa trong một lược đồ liên quan [như sách cho tác giả] hoặc Tạo và lưu các mô hình Mongoose
Vì các lược đồ
}
87 và }
88 thể hiện tính linh hoạt của lược đồ Mongoose, tôi sẽ tiếp tục sử dụng các lược đồ đó và rút ra một mô hình 120 và ________0____21 từ chúng
1
{
65_______2_______3
{
68Mô hình Mongoose, khi được lưu, sẽ tạo Tài liệu trong MongoDB với các thuộc tính như được xác định bởi lược đồ mà nó được lấy từ đó
Để chứng minh việc tạo và lưu một đối tượng, trong ví dụ tiếp theo này, tôi sẽ tạo một số đối tượng. một
120 Mô hình và một số
121 Mô hình. Sau khi được tạo, các đối tượng này sẽ được duy trì trong MongoDB bằng cách sử dụng phương thức
124 của Mô hình
1
{
702
{
723
49
4
{
7627
{
7829
}
5firstName: "Jamie",0
{
82firstName: "Jamie",2
{
84firstName: "Jamie",3
{
86firstName: "Jamie",5
{
88firstName: "Jamie",6
firstName: "Jamie",8
{
91firstName: "Jamie",9
{
9331
{
9532
{
97{
10{
95{
44201
{
46203
{
48205
{
50207
{
52209
{
54211
{
56213
{
58215
{
60{
95{
62219
220
221
222
{
95224________2____
Trong ví dụ trên, tôi đã vô tình chèn tham chiếu đến hai cuốn sách gần đây nhất của mình. Ví dụ bắt đầu bằng cách tạo và lưu một
125 được tạo từ một Mô hình
120. Bên trong hàm
124 của
125, nếu xảy ra lỗi, ứng dụng sẽ xuất ra một ngoại lệ. Khi lưu thành công, bên trong hàm
124, hai đối tượng sách được tạo và lưu. Tương tự như
125, nếu xảy ra lỗi khi lưu, sẽ xuất ra lỗi;
Để tạo tham chiếu đến Tác giả, các đối tượng cuốn sách đều tham chiếu đến khóa chính
}
94 của lược đồ }
87 trong thuộc tính }
87 của lược đồ }
88Xác thực dữ liệu trước khi lưu
Điều khá phổ biến là dữ liệu cuối cùng sẽ tạo ra một mô hình được điền vào một biểu mẫu trên trang web. Do đó, bạn nên xác thực dữ liệu này trước khi lưu Mô hình vào MongoDB
Trong ví dụ tiếp theo này, tôi đã cập nhật lược đồ tác giả trước đó để thêm xác thực cho các thuộc tính sau.
}
59, 136,
137 và
138
1
11
2
13
3
49
4
261
27
263
29
265
firstName: "Jamie",0
267
firstName: "Jamie",2
269
firstName: "Jamie",3
mkdir mongoose_basics
1firstName: "Jamie",5
273
firstName: "Jamie",6
275
firstName: "Jamie",8
277
firstName: "Jamie",9
279
31
281
32
283
{
10285
{
44287
{
46289
{
48mkdir mongoose_basics
1{
50293
{
52277
{
54279
{
56281
{
58firstName: "Jamie",01
{
60285
{
62firstName: "Jamie",05
220
289
222
mkdir mongoose_basics
1________2_____ Tài sản
}
59 đã được quy cho tài sản 140. Bây giờ khi tôi gọi hàm
124, Mongoose sẽ trả về lỗi với thông báo cho biết thuộc tính
}
59 là bắt buộc. Tôi đã chọn không yêu cầu thuộc tính }
60 trong trường hợp Cher hoặc Madonna là tác giả trong cơ sở dữ liệu của tôiTất cả các thuộc tính
136,
137 và
138 đều áp dụng các trình xác thực tùy chỉnh rất giống nhau. Mỗi người đều đảm bảo rằng các giá trị bắt đầu bằng tên miền tương ứng của mạng xã hội. Các trường này không bắt buộc, vì vậy trình xác thực sẽ chỉ được áp dụng khi dữ liệu được cung cấp cho thuộc tính đó
Tìm kiếm và cập nhật dữ liệu
Phần giới thiệu về Mongoose sẽ không hoàn chỉnh nếu không có ví dụ về tìm kiếm bản ghi và cập nhật một hoặc nhiều thuộc tính trên đối tượng đó
Mongoose cung cấp một số hàm khác nhau để tìm dữ liệu cho một Model cụ thể. Các chức năng là
147,
148 và
149
Các hàm
147 và
148 đều chấp nhận một đối tượng làm đầu vào cho phép tìm kiếm phức tạp, trong khi đó
149 chỉ chấp nhận một giá trị duy nhất với hàm gọi lại [một ví dụ sẽ sớm được đưa ra sau đây]. Trong ví dụ tiếp theo này, tôi sẽ trình bày cách tìm tất cả các sách có chứa chuỗi "mvc" trong tiêu đề của chúng
1
firstName: "Jamie",41_______2_______
firstName: "Jamie",43_______4__________
firstName: "Jamie",45
41_______93
27
{
9529
firstName: "Jamie",51
firstName: "Jamie",0
28
Bên trong hàm
147, tôi đang tìm kiếm chuỗi phân biệt chữ hoa chữ thường "mvc" trên thuộc tính
154. Điều này được thực hiện bằng cách sử dụng cùng một cú pháp để tìm kiếm một chuỗi bằng JavaScript
Lệnh gọi hàm find cũng được liên kết với các phương thức truy vấn khác, chẳng hạn như
155,
156,
157,
158, ________0____59, ________0____60, v.v.
Hãy mở rộng dựa trên ví dụ trước để giới hạn kết quả của chúng tôi trong 5 cuốn sách đầu tiên và sắp xếp theo ngày tạo giảm dần. Điều này sẽ trả về năm cuốn sách gần đây nhất có chứa "mvc" trong tiêu đề
1
firstName: "Jamie",41
2
firstName: "Jamie",43_______4__________
firstName: "Jamie",59
43_______61
27
firstName: "Jamie",63
29
{
93firstName: "Jamie",0
{
95firstName: "Jamie",2
firstName: "Jamie",51
firstName: "Jamie",3
28
Sau khi áp dụng hàm
147, thứ tự của các hàm khác không quan trọng vì tất cả các hàm được xâu chuỗi được biên dịch cùng nhau thành một truy vấn duy nhất và không được thực thi cho đến khi hàm ________0____62 được gọi
Như tôi đã đề cập trước đó,
149 được thực thi hơi khác một chút. Nó thực thi ngay lập tức và chấp nhận chức năng gọi lại, thay vì cho phép một chuỗi chức năng. Trong ví dụ tiếp theo này, tôi đang truy vấn một tác giả cụ thể bằng
}
94 của họ1
firstName: "Jamie",73_______2_______
firstName: "Jamie",75
3___
firstName: "Jamie",77
43_______79
27
28
}
94 trong trường hợp của bạn có thể hơi khác một chút. Tôi đã sao chép }
94 này từ một 167 trước đó khi tìm danh sách sách có "mvc" trong tiêu đề của chúng
Khi một đối tượng đã được trả lại, bạn có thể sửa đổi bất kỳ thuộc tính nào của nó để cập nhật nó. Khi bạn đã thực hiện các thay đổi cần thiết, bạn gọi phương thức
124, giống như khi bạn tạo đối tượng. Trong ví dụ tiếp theo này, tôi sẽ mở rộng ví dụ
169 và cập nhật thuộc tính
138 trên tác giả
1
firstName: "Jamie",73
2
{
93_______4__________{
9543_______89
27
{
9529
firstName: "Jamie",93
firstName: "Jamie",0
221
firstName: "Jamie",2
firstName: "Jamie",97
firstName: "Jamie",3
firstName: "Jamie",99_______3_______5_______2_______27_______3_______8_______8
Sau khi tác giả được truy xuất thành công, thuộc tính
138 được đặt và hàm
124 được gọi. Mongoose có thể phát hiện ra rằng thuộc tính
138 đã bị thay đổi và nó sẽ gửi một câu lệnh cập nhật tới MongoDB chỉ trên các thuộc tính đã được sửa đổi. Nếu xảy ra lỗi khi lưu, một ngoại lệ sẽ được đưa ra và sẽ tạm dừng ứng dụng. Khi thành công, một thông báo thành công được ghi vào bảng điều khiển
Mongoose cũng cung cấp hai chức năng bổ sung giúp tìm và lưu đối tượng trong một bước duy nhất với các chức năng được đặt tên phù hợp.
174 và
175. Hãy cập nhật ví dụ trước để sử dụng
174
1
305_______2_______
307_______4__________
309_______6_______4_______11
27
{
9529
315
firstName: "Jamie",0
28
Trong ví dụ trước, các thuộc tính cần cập nhật được cung cấp dưới dạng đối tượng cho tham số thứ hai của hàm
174. Hàm gọi lại hiện là tham số thứ ba. Khi cập nhật thành công, đối tượng
}
87 trả về chứa thông tin đã cập nhật. Điều này được ghi vào bảng điều khiển để xem các thuộc tính của tác giả được cập nhậtMã mẫu cuối cùng
Trong suốt bài viết này, tôi đã cung cấp các đoạn mã nhỏ xác định một hành động rất cụ thể, chẳng hạn như tạo lược đồ, tạo mô hình, v.v. Hãy đặt tất cả lại với nhau trong một ví dụ đầy đủ.
Đầu tiên, tôi đã tạo hai tệp bổ sung.
179 và
180. Các tệp này chứa các định nghĩa lược đồ tương ứng và việc tạo mô hình. Dòng mã cuối cùng làm cho mô hình có sẵn để sử dụng trong tệp
181
Hãy bắt đầu với tác giả. tập tin js
1
{
72
3
11
4
13
27
49
29
261
firstName: "Jamie",0
263
firstName: "Jamie",2
265
firstName: "Jamie",3
267
firstName: "Jamie",5
269
firstName: "Jamie",6
mkdir mongoose_basics
1firstName: "Jamie",8
273
firstName: "Jamie",9
275
31
277
32
279
{
10281
{
44283
{
46285
{
48287
{
50289
{
52mkdir mongoose_basics
1{
54293
{
56277
{
58279
{
60281
{
62firstName: "Jamie",01
220
285
222
firstName: "Jamie",05
224________2______
Tiếp đến là tệp
180
1
{
72
3
{
134
13
27
{
1729
lastName: "Munro"23
firstName: "Jamie",0
lastName: "Munro"25
firstName: "Jamie",2
lastName: "Munro"27
firstName: "Jamie",3
lastName: "Munro"29
firstName: "Jamie",5
lastName: "Munro"31
firstName: "Jamie",6
lastName: "Munro"33
firstName: "Jamie",8
mkdir mongoose_basics
1firstName: "Jamie",9
lastName: "Munro"37
31
lastName: "Munro"39
32
lastName: "Munro"41
{
10lastName: "Munro"43
{
44lastName: "Munro"45
{
46lastName: "Munro"47
{
48lastName: "Munro"49
{
50lastName: "Munro"51
{
52lastName: "Munro"53
{
54289
{
56lastName: "Munro"57
{
58firstName: "Jamie",31
{
60firstName: "Jamie",33
{
62firstName: "Jamie",35
220
firstName: "Jamie",37
222
28
224________2_____
Và cuối cùng, tệp
181 được cập nhật
1
{
72
3
lastName: "Munro"78
4
lastName: "Munro"80
27
29
38
firstName: "Jamie",0
firstName: "Jamie",75
firstName: "Jamie",2
{
95firstName: "Jamie",3
lastName: "Munro"89
firstName: "Jamie",5
{
95firstName: "Jamie",6
lastName: "Munro"93
firstName: "Jamie",8
lastName: "Munro"95
firstName: "Jamie",9
lastName: "Munro"97
31
lastName: "Munro"99
32
401
{
10267
{
44405
{
46407
{
48409
{
50227
{
52{
54414
{
56221
{
58firstName: "Jamie",97
{
60420
{
62firstName: "Jamie",97
220
424
222
426
224
428
226________6____
Trong ví dụ trên, tất cả các hành động của Mongoose được chứa trong hàm
}
77. Các tệp }
87 và }
88 được bao gồm trong hàm 187 sau khi bao gồm thư viện
}
75Với MongoDB đang chạy, bây giờ bạn có thể chạy Node hoàn chỉnh. ứng dụng js bằng lệnh sau
1
480
Sau khi tôi lưu một số dữ liệu vào cơ sở dữ liệu của mình, tôi đã cập nhật tệp
181 với các hàm tìm kiếm như sau
1
{
72
3
lastName: "Munro"78
4
lastName: "Munro"80
27
29
38
firstName: "Jamie",0
firstName: "Jamie",75
firstName: "Jamie",2
{
95firstName: "Jamie",3
lastName: "Munro"89
firstName: "Jamie",5
{
95firstName: "Jamie",6
}
00firstName: "Jamie",8
}
02firstName: "Jamie",9
}
0431
}
0632
}
08{
10221
{
44firstName: "Jamie",97
{
46}
14{
48227
{
50{
95{
52}
20{
54221
{
56firstName: "Jamie",97
{
58}
26{
60firstName: "Jamie",97
{
62}
30220
444
222
}
34224
}
36________2____ Một lần nữa, bạn có thể chạy ứng dụng bằng lệnh.
190
Tóm lược
Sau khi đọc bài viết này, bạn sẽ có thể tạo các Mô hình và Lược đồ Mongoose cực kỳ linh hoạt, áp dụng xác thực đơn giản hoặc phức tạp, tạo và cập nhật tài liệu và cuối cùng là tìm kiếm các tài liệu đã được tạo
Hy vọng rằng bây giờ bạn cảm thấy thoải mái khi sử dụng Mongoose. Nếu bạn đang muốn tìm hiểu thêm, tôi khuyên bạn nên xem lại Hướng dẫn Mongoose đi sâu vào các chủ đề nâng cao hơn như dân số, phần mềm trung gian, lời hứa, v.v.