Hướng dẫn is mongoose a part of mongodb? - mongoose có phải là một phần của mongodb không?
bởi Nick Karnik Mongoose là thư viện mô hình dữ liệu đối tượng (ODM) cho MongoDB và Node.js. Nó quản lý mối quan hệ giữa dữ liệu, cung cấp xác thực lược đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn của các đối tượng đó trong MongoDB. MongoDB là một cơ sở dữ liệu tài liệu NoQuery không có lược đồ. Điều đó có nghĩa là bạn có thể lưu trữ các tài liệu JSON trong đó và cấu trúc của các tài liệu này có thể thay đổi vì nó không được thực thi như cơ sở dữ liệu SQL. Đây là một trong những lợi thế của việc sử dụng NoQuery vì nó tăng tốc độ phát triển ứng dụng và giảm sự phức tạp của việc triển khai. Dưới đây là một ví dụ về cách dữ liệu được lưu trữ trong cơ sở dữ liệu Mongo so với SQL: Bộ sưu tập trên Mongo tương đương với các bảng trong cơ sở dữ liệu quan hệ. Họ có thể giữ nhiều tài liệu JSON. ‘Tài liệu, tương đương với các bản ghi hoặc hàng dữ liệu trong SQL. Trong khi một hàng SQL có thể tham chiếu dữ liệu trong các bảng khác, các tài liệu Mongo thường kết hợp nó trong một tài liệu. Các trường, các thuộc tính hoặc các thuộc tính tương tự như các cột trong bảng SQL. Trong khi Mongo không có lược đồ, SQL định nghĩa một lược đồ thông qua định nghĩa bảng. Một clowoose ‘lược đồ là một cấu trúc dữ liệu tài liệu (hoặc hình dạng của tài liệu) được thực thi thông qua lớp ứng dụng. Các mô hình, là các hàm tạo bậc cao hơn lấy lược đồ và tạo một thể hiện tài liệu tương đương với các bản ghi trong cơ sở dữ liệu quan hệ. Trước khi chúng tôi bắt đầu, hãy để Cài đặt Mongo. Bạn có thể chọn từ một trong các tùy chọn sau (chúng tôi đang sử dụng tùy chọn số 1 cho bài viết này):one of the following options (we are using option #1 for this article): Hãy để điều hướng thông qua một số điều cơ bản của Mongoose bằng cách triển khai một mô hình đại diện cho dữ liệu cho một cuốn sách địa chỉ đơn giản hóa. Tôi đang sử dụng mã Visual Studio, Node 8.9 và NPM 5.6. Bắn lên IDE yêu thích của bạn, tạo một dự án trống và để bắt đầu! Chúng tôi sẽ sử dụng cú pháp ES6 giới hạn trong nút, vì vậy chúng tôi đã giành được cấu hình Babel. Hãy cùng đi đến thư mục dự án và khởi tạo dự án của chúng tôi Hãy để cài đặt Mongoose và thư viện xác thực với lệnh sau: Lệnh cài đặt ở trên sẽ cài đặt phiên bản mới nhất của thư viện. Cú pháp Mongoose trong bài viết này là đặc trưng cho Mongoose V5 và hơn thế nữa. Tạo một tập tin Tiếp theo, chúng tôi sẽ thêm một lớp đơn giản với một phương thức kết nối với cơ sở dữ liệu. Chuỗi kết nối của bạn sẽ thay đổi dựa trên cài đặt của bạn.
2Call trên trả về một đối tượng singleton. Điều đó có nghĩa là lần đầu tiên bạn gọi 2, nó đang tạo ra một thể hiện của lớp Mongoose và trả lại nó. Trên các cuộc gọi tiếp theo, nó sẽ trả về cùng một thể hiện được tạo và trả lại cho bạn lần đầu tiên vì cách nhập/xuất mô -đun hoạt động trong ES6.call above returns a Singleton object. It means that the first time you call 2, it is creating an instance of the Mongoose class and returning it. On subsequent calls, it will return the same instance that was created
and returned to you the first time because of how module import/export works in ES6.Nhập/Yêu cầu Nhập/Yêu cầu Dòng công việcTương tự, chúng tôi đã biến lớp cơ sở dữ liệu của chúng tôi thành một singleton bằng cách trả về một thể hiện của lớp trong câu lệnh 4 vì chúng tôi chỉ cần một kết nối duy nhất với cơ sở dữ liệu.ES6 giúp chúng tôi rất dễ dàng tạo mẫu singleton (một thể hiện đơn) vì cách trình tải mô -đun hoạt động bằng cách lưu trữ phản hồi của tệp đã nhập trước đó. Lược đồ Mongoose so với mô hìnhMột mô hình Mongoose là một trình bao bọc trong lược đồ Mongoose. Lược đồ Mongoose xác định cấu trúc của tài liệu, giá trị mặc định, trình xác nhận, v.v., trong khi mô hình Mongoose cung cấp một giao diện cho cơ sở dữ liệu để tạo, truy vấn, cập nhật, xóa bản ghi, v.v. Tạo một mô hình Mongoose bao gồm chủ yếu gồm ba phần: 1. Tham khảo Mongoose
Tham chiếu này sẽ giống như cái được trả về khi chúng tôi kết nối với cơ sở dữ liệu, điều đó có nghĩa là các định nghĩa lược đồ và mô hình sẽ không cần kết nối rõ ràng với cơ sở dữ liệu. 2. Xác định lược đồLược đồ xác định các thuộc tính tài liệu thông qua một đối tượng trong đó tên khóa tương ứng với tên thuộc tính trong bộ sưu tập.
Ở đây chúng tôi xác định một thuộc tính có tên là email có chuỗi loại lược đồ ánh xạ vào trình xác nhận nội bộ sẽ được kích hoạt khi mô hình được lưu vào cơ sở dữ liệu. Nó sẽ thất bại nếu loại dữ liệu của giá trị không phải là loại chuỗi.email with a schema type String which maps to an internal validator that will be triggered when the model is saved to the database. It will fail if the data type of the value is not a string type. Các loại lược đồ sau đây được cho phép:
Hỗn hợp và Objectid được xác định theo 5.3. Xuất một mô hìnhChúng ta cần gọi hàm tạo mô hình trên thể hiện Mongoose và chuyển tên của bộ sưu tập và tham chiếu đến định nghĩa lược đồ.
Hãy để kết hợp mã trên vào 6 để xác định nội dung của mô hình email cơ bản:to define the contents of a basic email model:
Một định nghĩa lược đồ phải đơn giản, nhưng sự phức tạp của nó thường dựa trên các yêu cầu ứng dụng. Các lược đồ có thể được tái sử dụng và chúng cũng có thể chứa một số trường học trẻ em. Trong ví dụ trên, giá trị của thuộc tính email là một loại giá trị đơn giản. Tuy nhiên, nó cũng có thể là một loại đối tượng với các thuộc tính bổ sung trên đó. Chúng ta có thể tạo một thể hiện của mô hình mà chúng ta đã xác định ở trên và điền vào nó bằng cú pháp sau:
Hãy để nâng cao lược đồ email để làm cho thuộc tính email trở thành một trường duy nhất, bắt buộc và chuyển đổi giá trị thành chữ thường trước khi lưu nó. Chúng tôi cũng có thể thêm một chức năng xác thực sẽ đảm bảo rằng giá trị là địa chỉ email hợp lệ. Chúng tôi sẽ tham khảo và sử dụng thư viện Trình xác thực được cài đặt trước đó.
Hoạt động cơ bảnMongoose có API linh hoạt và cung cấp nhiều cách để hoàn thành một nhiệm vụ. Chúng tôi sẽ không tập trung vào các biến thể vì đó là phạm vi cho bài viết này, nhưng hãy nhớ rằng hầu hết các hoạt động có thể được thực hiện theo nhiều cách về mặt cú pháp hoặc thông qua kiến trúc ứng dụng. Tạo bản ghiHãy để tạo một thể hiện của mô hình email và lưu nó vào cơ sở dữ liệu:
Kết quả là một tài liệu được trả lại khi lưu thành công: 0Các trường sau được trả về (các trường nội bộ được đặt trước với một dấu gạch dưới):
Nếu bạn cố gắng lặp lại thao tác lưu ở trên, bạn sẽ gặp lỗi vì chúng tôi đã chỉ định rằng trường email phải là duy nhất. Hồ sơ tìm nạpHãy để cố gắng lấy lại bản ghi mà chúng tôi đã lưu vào cơ sở dữ liệu trước đó. Lớp mô hình hiển thị một số phương thức tĩnh và thể hiện để thực hiện các hoạt động trên cơ sở dữ liệu. Bây giờ chúng tôi sẽ cố gắng tìm bản ghi mà chúng tôi đã tạo trước đây bằng phương thức Tìm và chuyển email làm thuật ngữ tìm kiếm. 1Tài liệu được trả về sẽ tương tự như những gì được hiển thị khi chúng tôi tạo bản ghi: 0Cập nhật hồ sơHãy để sửa đổi bản ghi ở trên bằng cách thay đổi địa chỉ email và thêm một trường khác vào nó, tất cả trong một thao tác duy nhất. Vì lý do hiệu suất, Mongoose won đã trả lại tài liệu được cập nhật, vì vậy chúng tôi cần chuyển một tham số bổ sung để yêu cầu: 3Tài liệu được trả về sẽ chứa email cập nhật: 0Xóa hồ sơChúng tôi sẽ sử dụng cuộc gọi 1 để xóa bản ghi. Nó trả về tài liệu gốc đã bị xóa: 5Người trợ giúpChúng tôi đã xem xét một số chức năng cơ bản ở trên được gọi là CRUD (tạo, đọc, cập nhật, xóa), nhưng Mongoose cũng cung cấp khả năng định cấu hình một số loại phương thức và thuộc tính trợ giúp. Chúng có thể được sử dụng để đơn giản hóa hơn nữa làm việc với dữ liệu. Hãy cùng tạo ra một lược đồ người dùng trong 2 với các trường 3 và 4: 6Tài sản ảoMột thuộc tính ảo không được tồn tại trong cơ sở dữ liệu. Chúng tôi có thể thêm nó vào lược đồ của chúng tôi như một người trợ giúp để có được và đặt các giá trị. Hãy để tạo một thuộc tính ảo gọi là 5 có thể được sử dụng để đặt các giá trị trên 3 và 4 và truy xuất chúng như một giá trị kết hợp khi đọc: 7Gọi lại cho GET và SET phải sử dụng từ khóa chức năng vì chúng ta cần truy cập mô hình thông qua 8Keyword. Sử dụng các hàm mũi tên chất béo sẽ thay đổi những gì 8 đề cập đến.keyword. Using fat arrow functions will change what 8 refers to.Bây giờ, chúng ta có thể đặt 3 và 4 bằng cách gán giá trị cho 5: 8Mã trên sẽ xuất ra như sau: 9Phương pháp thể hiệnChúng ta có thể tạo các phương thức trợ giúp tùy chỉnh trên lược đồ và truy cập chúng thông qua thể hiện mô hình. Các phương pháp này sẽ có quyền truy cập vào đối tượng mô hình và chúng có thể được sử dụng khá sáng tạo. Chẳng hạn, chúng ta có thể tạo một phương thức để tìm tất cả những người có cùng tên với thể hiện hiện tại. Trong ví dụ này, hãy để tạo ra một hàm để trả về tên viết tắt cho người dùng hiện tại. Hãy để thêm một phương thức trợ giúp tùy chỉnh được gọi là 3 vào lược đồ: 0Phương pháp này sẽ có thể truy cập thông qua một thể hiện mô hình: 1Phương pháp tĩnhTương tự như các phương thức thể hiện, chúng ta có thể tạo các phương thức tĩnh trên lược đồ. Hãy để tạo ra một phương thức để truy xuất tất cả người dùng trong cơ sở dữ liệu: 2Gọi 4 trên lớp mô hình sẽ trả về tất cả người dùng trong cơ sở dữ liệu: 3Thêm phiên bản và phương thức tĩnh là một cách tiếp cận tốt để thực hiện giao diện với các tương tác cơ sở dữ liệu trên các bộ sưu tập và bản ghi. Phần mềm trung gianPhần mềm trung gian là các chức năng chạy ở các giai đoạn cụ thể của đường ống. Mongoose hỗ trợ phần mềm trung gian cho các hoạt động sau:
Chẳng hạn, các mô hình có chức năng 5 và 6 có hai tham số:
Hãy thử thử một ví dụ bằng cách thêm hai trường được gọi là 7 và 8 vào lược đồ của chúng tôi: 4Khi 9 được gọi, có một sự kiện 0 và 1 được kích hoạt. Đối với tham số thứ hai, bạn có thể vượt qua một hàm được gọi khi sự kiện được kích hoạt. Các chức năng này có một tham số cho hàm tiếp theo trong chuỗi phần mềm trung gian.Hãy để thêm một móc trước và đặt các giá trị cho 7 và 8: 5Hãy để tạo và lưu mô hình của chúng tôi: 6Bạn sẽ thấy các giá trị cho 7 và 8 khi bản ghi được tạo được in: 7bổ sungGiả sử rằng chúng tôi muốn theo dõi khi một bản ghi được tạo và cập nhật lần cuối trên mọi bộ sưu tập trong cơ sở dữ liệu của chúng tôi. Thay vì lặp lại quy trình trên, chúng tôi có thể tạo một plugin và áp dụng nó cho mọi lược đồ. Hãy để tạo một tệp 6 và sao chép chức năng ở trên như một mô -đun có thể tái sử dụng: 8Để sử dụng plugin này, chúng tôi chỉ cần chuyển nó đến các lược đồ nên được cung cấp chức năng này: 9Xây dựng truy vấnMongoose có một API rất phong phú, xử lý nhiều hoạt động phức tạp được MongoDB hỗ trợ. Hãy xem xét một truy vấn nơi chúng ta có thể tăng dần các thành phần truy vấn. Trong ví dụ này, chúng tôi sẽ:
0Đóng cửaChúng tôi hầu như không làm trầy xước bề mặt khám phá một số khả năng của Mongoose. Đó là một thư viện phong phú đầy đủ các tính năng hữu ích và mạnh mẽ làm cho nó trở thành niềm vui khi làm việc với các mô hình dữ liệu trong lớp ứng dụng. Mặc dù bạn có thể tương tác với Mongo trực tiếp bằng Trình điều khiển Mongo, Mongoose sẽ đơn giản hóa sự tương tác đó bằng cách cho phép bạn mô hình hóa mối quan hệ giữa dữ liệu và xác nhận chúng một cách dễ dàng. Sự thật thú vị: Mongoose được tạo ra bởi Valeri Karpovwho là một kỹ sư cực kỳ tài năng! Ông đặt ra thuật ngữ ngăn xếp trung bình. Mongoose is created by Valeri Karpov who is an incredibly talented engineer! He coined the term The MEAN Stack. Nếu bài viết này hữu ích, ??? Và theo dõi tôi trên Twitter.You may also like my workshop on youtube: How to Build a REST API with Node | Express | MongoHọc mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu MongoDB và Mongoose có giống nhau không?Mongoose là thư viện mô hình dữ liệu đối tượng (ODM) cho MongoDB và Node.js.Nó quản lý mối quan hệ giữa dữ liệu, cung cấp xác thực lược đồ và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn của các đối tượng đó trong MongoDB.MongoDB là một cơ sở dữ liệu tài liệu NoQuery không có lược đồ. js. It manages relationships between data, provides schema validation, and is used to translate between objects in code and the representation of those objects in MongoDB. MongoDB is a schema-less NoSQL document database.
Chúng ta có thể sử dụng Mongoose thay vì MongoDB không?Mongoose cho phép người dùng thuận tiện tạo và quản lý dữ liệu trong MongoDB.Mặc dù có thể quản lý dữ liệu, xác định các lược đồ, v.v ... Sử dụng API MongoDB, nhưng rất khó để làm điều đó.Do đó, Mongoose đã làm cho cuộc sống dễ dàng hơn.. While it is possible to manage data, define schemas, etc. using MongoDB APIs, it is quite difficult to do so. Hence, Mongoose has made lives easier.
Bạn nên sử dụng MongoDB hay Mongoose?Mongoose không phải là thư viện ODM duy nhất, có HAPIJS/Joi, MongoDB Schemas, v.v. và trong khi Mongoose tốt, đặc biệt là trong các lĩnh vực suy luận các loại dữ liệu, chúng ta nên chọn sử dụng xác thực lược đồ MongoDB để xác thực lược đồ.we should choose to use the MongoDB schema validation for schemas validation. |