Mongoose Là Gì

     

Mongoose là một trong thư viện quy mô hóa đối tượng người sử dụng (Object Data mã sản phẩm – ODM) cho MongoDB cùng Node.js. Nó làm chủ mối quan hệ giới tính giữa dữ liệu, cung cấp sự chứng thực giản đồ với được thực hiện để dịch giữa các đối tượng người tiêu dùng trong mã và biểu diễn các đối tượng người sử dụng trong MongoDB.

Bạn đang xem: Mongoose là gì

Bạn đang xem: Mongoose là gì

Bạn sẽ xem : Mongoose Là Gì

*
MongoDB là 1 trong cơ sở tài liệu NoSQL. Chúng ta hoàn toàn rất có thể tàng trữ các JSON trong đó, và cấu trúc của phần lớn tài liệu này trọn vẹn có thể đổi khác vì nó không bắt buộc tựa như những cơ sở tài liệu SQL. Đây là giữa những lợi cố kỉnh của việc sử dụng NoSQL bởi nó tăng gia tốc tăng trưởng áp dụng và sút sự phức hợp của việc thực hiện .

Dưới đây là ví dụ về cách dữ liệu được giữ lại trong cơ sở tài liệu Mongo vs. SQL:


Bạn sẽ đọc: trình làng Về Mongoose Là Gì, Cách áp dụng Mongoose với Node


Thuật ngữ – TerminologiesCollectionsCollections sinh hoạt Mongo tương tự với phần đông bảng một trong những cơ sở tài liệu quan lại hệ. Chúng trọn vẹn có thể chứa được nhiều tài liệu JSON .Documents“ Documents ” giống như với những phiên bản ghi vào SQL. Tuy vậy một loại SQL trọn vẹn có thể tham khảo thêm tài liệu giữa những bảng khác, đa số tài liệu Mongo thường phối hợp trong một tài liệu .Fields“ Fields ” ở trong tính tựa như như tựa như những cột vào một bảng SQL .SchemaTrong khi Mongo là schema-less, SQL tư tưởng một lược đồ gia dụng trải qua quan niệm bảng. Một lược vật Mongoose là một trong những lớp kết cấu tài liệu được thực hiện qua lớp vận dụng .Fields“ Models ” là đồ sộ bậc cao gồm một lược vật dụng và tạo ra một biểu thị của một tài liệu giống như với những bạn dạng ghi trong một cơ sở tài liệu quan hệ tình dục .Cài để MongoSchemaTrong khi Mongo là schema-less, SQL quan niệm một lược đồ trải qua có mang bảng. Một lược trang bị Mongoose “ là một kết cấu tài liệu tài liệu ( hoặc hình dáng của tài liệu ) được thực hiện qua lớp áp dụng .Cài đặt MongoDB thích hợp cho Hệ cai quản của các bạn từ website MongoDB https://docs.mongodb.com/manual/installation/ và tuân theo hướng dẫn thiết lậpTạo ĐK cửa hàng tài liệu sandbox free trên mLabCài đặt Mongo bằng Docker nếu như bạn sử dụng dockerHãy điều hướng qua một vài ít nhân tố cơ bạn dạng của Mongoose bằng phương pháp tiến hành bài bản tài liệu cho một sổ add đơn thuần .Cài đặt NPMChúng ta hãy vào thư mục dự án Bất Động Sản với khởi tạo dự án Bất Động Sản của tất cả chúng tanpm init – yCài đặt Mongoose và một thư viện chứng thực với lệnh sau :npm install mongoose validatorLệnh tùy chỉnh trên sẽ thiết lập phiên bạn dạng mới tốt nhất của thư viện. Cú pháp Mongoose trong bài xích báo này đặc thù cho Mongoose v5 và không những thế nữa .Kết nối đại lý dữ liệuTạo tệp. / src / database.js trong thư mục gốc của dự án Bất Động Sản .Tiếp theo, vớ cả chúng ta sẽ chế tạo thêm một một cách thức liên kết với các đại lý tài liệu .

Kết nối sẽ biến đổi tùy theo thiết đặt của bạn.

let mongoose = require ( “ mongoose ” ) ; const hệ thống = “ 127.0.0.1 : 27017 ” ; / / REPLACE WITH YOUR DB SERVERconst database = “ fcc-Mail ” ; / / REPLACE WITH YOUR DB NAMEclass Database constructor ( ) this. _connect ( ) _connect ( ) mongoose.connect ( ` mongodb : / / USD vps / USD database ` ). Then ( ( ) => console.log ( “ Database connection successful ” ) ). Catch ( err => console.error ( “ Database connection error ” ) ) module.exports = new Database ( ) Lệnh yêu cầu ( “ mongoose ” ) trả về bên trên trả về một đối tượng người tiêu dùng người chi tiêu và sử dụng Singleton. Điều này có nghĩa là lần đón đầu bạn điện thoại tư vấn ( “ mongoose ” ), nó tạo thành một lớp Mongoose với trả lại. Một trong những cuộc điện thoại tư vấn tiếp theo, nó đã trả lại cùng 1 thành viên đã được sinh sản và trả lại cho chính mình lần mũi nhọn tiên phong vì biện pháp nhập / xuất mô-đun trong ES6 .

Xem thêm: Từ Điển Tiếng Việt " Quy Luật Là Gì ? Định Nghĩa Và Phân Loại Quy Luật

Tương tự như vậy, tất cả họ đã gửi lớp các đại lý tài liệu của vớ cả bọn họ thành một singleton bằng phương pháp trả lại một thể hiện của phần trong module.exports bởi vì tất cả họ chỉ nên một liên kết duy duy nhất với các đại lý tài liệu .

ES6 có tác dụng cho bọn họ dễ dàng chế tác mẫu singleton (ví dụ đơn) do mô-đun chuyển động như vắt nào bằng phương pháp lưu trữ những phản hồi của một tệp tin được nhập trước đó.


Mongoose Schema vs. Model

Mongoose model gồm có Mongoose schema. Mongoose schema xác lập cấu tạo của tài liệu, gần như giá trị mặc định, xác nhận. Trong những lúc Mongoose Model cung ứng một đồ họa cho đại lý tài liệu nhằm tạo, truy vấn, update, xoá những bản ghi .Tạo ra một đồ sộ Mongoose mã sản phẩm gồm có đa số là tía phần :Tham khảo Mongooselet mongoose = require ( “ mongoose ” )Tài liệu bài viết liên quan này sẽ giống với tài liệu đã làm được trả về khi chúng tôi liên kết với các đại lý tài liệu, tức là lược vật và phần nhiều định nghĩa đồ sộ sẽ không cần phải liên kết một cách ví dụ với đại lý tài liệu .Xác định SchemaMột giản đồ gia dụng định nghĩa gia tài gia tài trải qua một đối tượng người sử dụng người dùng mà tên khóa tương ứng với tên thuộc tính trong bộ sưu tập .Các loại schena sau được được được cho phép :ArrayBooleanBufferDateMixed ( A generic / flexible data type ) NumberObjectIdStringHỗn hợp và ObjectId được định nghĩa theo nhu cầu ( “ mongoose ” ) Schema. Types .Xuất tế bào hìnhChúng ta call constructor bài bản trên Mongoose và truyền nó mang lại tên bộ sưu tầm và một tham chiếu đến lược thiết bị .module.exports = mongoose.model ( “ thư điện tử ”, emailSchema )Chúng ta hãy tích thích hợp đoạn mã bên trên thành. / src / models / email.js để xác lập ngôn từ của một quy mô cơ bản :

Create Record

Hãy chế tạo ra một biểu lộ của quy mô thư điện tử và giữ nó vào cơ sở tài liệu :Trường _id được Mongo tạo tự động hóa và là 1 khóa bao gồm của collection. Giá bán trị của nó là duy nhất. Giá trị của trường email được trả lại. Xem xét nó là chữ in thường vày thuộc tính đúng trong những giản đồ dùng lowercase : true __v là nằm trong tính versionKey được bỏ trên mỗi tài liệu lúc được tạo vì chưng Mongoose. Giá trị của chính nó gồm gồm nội dung tài liệu. Nếu khách hàng nỗ lực tạo ra tiếp với dự liệu như trên, các bạn sẽ nhận được một lỗi bởi trường email tất cả chúng ta định nghĩa là duy nhất .

Xem thêm: Sự Gian Lận ( Fraud Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích Fraud Là Gì

Fetch Record

Hãy thử rước lại bạn dạng ghi tất cả bọn họ đã lưu vào cơ sở tài liệu trước đó. Lớp quy mô cho thấy thêm một số ít chiến thuật tĩnh và để tiến hành trên cửa hàng tài liệu. Hiện thời tất cả họ sẽ kiếm tìm kiếm hồ nước sơ nhưng tất cả chúng ta đã tạo ra trước đó bằng phương pháp sử dụng giải pháp tìm và gửi thư điện tử dưới dạng các từ search kiếm .Hãy sản xuất một giản đồ người tiêu dùng trong / src / models / user.js cùng với fieldsfirstName với lastName :let mongoose = require ( “ mongoose ” ) let userSchema = new mongoose. Schema ( firstName : String, lastName : String ) module.exports = mongoose.model ( “ User ”, userSchema ) Virtual PropertyMột số trực thuộc tính ảo không duy nhất thiết yêu cầu là sinh tồn trong đại lý tài liệu. Bọn họ hoàn toàn hoàn toàn có thể thêm nó vào giản đồ dùng của vớ cả họ như một người trợ giúp để có được và tùy chỉnh cấu hình những cực hiếm .Hãy tạo nên một trực thuộc tính ảo điện thoại tư vấn là fullName trả toàn rất có thể được sử dụng để đặt những quý hiếm trên firstName cùng lastName cùng lấy chúng như một cực hiếm tích hợp khi phát âm :

userSchema.virtual(“fullName”).get(function() return this.firstName + ” ” + this.lastName)userSchema.virtual(“fullName”).set(function(name) let str = name.split(” “) this.firstName = str this.lastName = str)Gọi lại để nhận với đặt phải thực hiện từ khoá tác dụng vì chúng ta cần truy vấn vào mô hình thông qua tự khóa này. Sử dụng chức năng mũi thương hiệu chất lớn sẽ đổi khác điều này nhắc đến.

Bây giờ, vớ cả họ hoàn toàn rất có thể đặt firstName cùng lastName bằng phương pháp gán một giá bán trị cho fullName :let model = new UserModel ( ) Model. FullName = “ Thomas Anderson ” console.log ( Model. ToJSON ( ) ) / / Output model fields as JSONconsole. Log ( ) console.log ( Model. FullName ) / / output the full nameĐoạn mã trên đã xuất ra bước sau đây : _id : 5 a7a4248550ebb9fafd898cf, firstName : “ Thomas ”, lastName : “ Anderson ” Các phương thứcChúng ta trả toàn hoàn toàn có thể tạo ra những cách thức tuỳ chỉnh trên lược đồ cùng truy vấn bọn chúng trải qua mô hình mẫu. Những phương án này sẽ có quyền truy vấn vào đối tượng người sử dụng người tiêu dùng quy tế bào và bọn chúng hoàn toàn rất có thể được sử dụng. Ví dụ, tất cả bọn họ hoàn toàn hoàn toàn có thể tìm toàn bộ những người có cùng thương hiệu .Trong ví dụ này, tất cả chúng ta hãy sản xuất một hàm nhằm trả lại tên cho tất cả những người dùng hiện tại tại. Hãy thêm một phương pháp helper tùy chỉnh gọi là getInitials vào giản thiết bị :userSchema. Methods. GetInitials = function ( ) return this. FirstName + this. LastName phương pháp này vẫn hoàn toàn có thể truy vấn trải sang một quy mô lấy ví dụ :let mã sản phẩm = new UserModel ( firstName : “ Thomas ”, lastName : “ Anderson ” ) let initials = Model. GetInitials ( ) console.log ( initials ) / / This will đầu ra : TAPhương pháp tĩnhTương tự như những phương pháp dụ, tất cả chúng ta hoàn toàn rất có thể tạo những phương thức tĩnh bên trên lược đồ. Hãy tạo nên một giải pháp để lấy cục bộ người sử dụng trong đại lý tài liệu :userSchema. Statics. GetUsers = function ( ) return new Promise ( ( resolve, reject ) => this.find ( ( err, docs ) => if ( err ) console.error ( err ) return reject ( err ) resolve ( docs ) ) ) điện thoại tư vấn getUsers trên lớp mã sản phẩm sẽ trả lại tổng thể người tiêu dùng trong cửa hàng tài liệu :

UserModel.getUsers() .then(docs => console.log(docs) ) .catch(err => console.error(err) )Thêm dụ và phương thức tĩnh là 1 trong những cách tiếp cận tốt đẹp để tiến hành một giao diện liên tưởng cơ sở tài liệu trên các bộ sưu tầm và hồ sơ.MiddlewareMiddleware là các tác dụng chạy ở những giai đoạn cụ thể của con đường ống dẫn. Mongoose hỗ trợ trung gian đến các chuyển động sau: