Mongoose là gì

     

Mongoose là 1 trong tlỗi viện quy mô hóa đối tượng (Object Data Model – ODM) đến MongoDB và Node.js. Nó thống trị mối quan hệ thân tài liệu, cung ứng sự xác thực giản trang bị và được áp dụng để dịch thân những đối tượng người sử dụng vào mã với màn biểu diễn các đối tượng vào MongoDB.

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

quý khách hàng đã xem: Mongoose Là Gì


*

MongoDB là 1 cửa hàng tài liệu NoSQL. quý khách hàng hoàn toàn có thể lưu trữ những JSON trong số đó, với cấu trúc của những tài liệu này rất có thể biến đổi do nó ko bắt buộc nhỏng các các đại lý dữ liệu Squốc lộ. Đây là một trong những trong số những ưu thế của vấn đề áp dụng NoSQL vì nó tăng tốc độ trở nên tân tiến áp dụng và sút sự phức tạp của việc tiến hành.

Dưới đó là ví dụ về phong thái dữ liệu được giữ gìn trong cơ sở dữ liệu Mongo vs. SQL:



Thuật ngữ – Terminologies

Collections

Collections ngơi nghỉ Mongo tương đương cùng với các bảng trong các các đại lý dữ liệu quan hệ nam nữ. Chúng có thể chứa nhiều tư liệu JSON.

Documents

“Documents” tương đương cùng với các bản ghi vào Squốc lộ. Mặc cho dù một mẫu Squốc lộ rất có thể tham khảo tài liệu trong số bảng khác, những tài liệu Mongo thường kết hợp trong một tài liệu.

Fields

“Fields” ở trong tính tương tự như nhỏng các cột trong một bảng SQL.

Schema

Trong lúc Mongo là schema-less, Squốc lộ khái niệm một lược vật trải qua định nghĩa bảng. Một lược đồ vật Mongoose là một lớp cấu trúc tài liệu được thi hành qua lớp vận dụng.

Fields

“Models” là mô hình bậc cao bao gồm một lược đồ gia dụng và tạo thành một thể hiện của một tài liệu tương tự với các bản ghi trong một cơ sở dữ liệu quan hệ giới tính.

Cài đặt Mongo

SchemaTrong khi Mongo là schema-less, Squốc lộ có mang một lược vật dụng thông qua khái niệm bảng. Một lược thứ Mongoose “là 1 cấu tạo dữ liệu tư liệu (hoặc kiểu dáng của tài liệu) được thực hành qua lớp vận dụng.

Cài đặt MongoDB thích hợp cho Hệ điều hành của khách hàng trường đoản cú Website MongoDB https://docs.mongodb.com/manual/installation/ với tuân theo giải đáp cài đặt đặt

Tạo ĐK cửa hàng dữ liệu sandbox miễn giá thành bên trên mLabCài đặt Mongo bởi Docker nếu như bạn sử dụng dockerHãy điều phối qua một số trong những sự việc cơ bạn dạng của Mongoose bằng phương pháp triển khai mô hình tài liệu cho một sổ ảnh hưởng đơn giản và dễ dàng.

Cài đặt NPMChúng ta hãy vào thỏng mục dự án công trình và khởi chế tạo ra dự án công trình của chúng ta

npm init -y

Cài đặt Mongoose với một thư viện xác thực cùng với lệnh sau:

npm install mongoose validatorLệnh cài đặt đặt trên sẽ cài đặt phiên bản mới nhất của tlỗi viện. Cú pháp Mongoose vào bài bác báo này đặc thù mang đến Mongoose v5 và hơn thế nữa.

Kết nối đại lý dữ liệuTạo tệp ./src/database.js vào thư mục cội của dự án công trình.

Tiếp theo, bọn họ sẽ khởi tạo thêm 1 một phương thức kết nối với đại lý dữ liệu.

Kết nối vẫn đổi khác phụ thuộc vào setup của doanh nghiệp.

Xem thêm: Game Đường Đời Bất Tậ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://$server/$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ề phía trên trả về một đối tượng người sử dụng Singleton. Như vậy tức là lần trước tiên chúng ta Gọi (“mongoose”), nó tạo thành một tấm Mongoose và trả lại . Trong những cuộc hotline tiếp theo, nó đang trả lại và một cá thể đã có tạo với trả lại cho chính mình lần thứ nhất do bí quyết nhập / xuất mô-đun vào ES6.



Tương từ điều đó, họ sẽ đưa lớp Cơ sở dữ liệu của chúng ta thành một singleton bằng phương pháp trả lại một diễn đạt của lớp bên trong module.exports vị bọn họ chỉ việc một kết nối tuyệt nhất với đại lý tài liệu.

ES6 tạo cho chúng ta dễ dàng sản xuất mẫu mã singleton (ví dụ đơn) do mô-đun chuyển động ra làm sao bằng cách lưu trữ những bình luận của một tệp tin được nhập trước đó.


Mongoose Schema vs. Model

Mongoose Model bao hàm Mongoose schema. Mongoose schema khẳng định cấu tạo của tài liệu, các giá trị mang định, xác thực. trong những lúc Mongoose mã sản phẩm cung ứng một bối cảnh cho đại lý dữ liệu nhằm tạo nên, truy hỏi vấn, update, xoá những bản ghi.

Tạo ra một quy mô Mongoose model bao hàm chủ yếu là cha phần:

Tmê man khảo Mongooselet mongoose = require(“mongoose”)

Tài liệu xem thêm này vẫn giống cùng với tư liệu đã được trả về lúc công ty chúng tôi kết nối cùng với các đại lý tài liệu, tức là lược vật với các khái niệm quy mô sẽ không cần phải kết nối một phương pháp rõ ràng với cơ sở dữ liệu.

Xác định SchemaMột giản đồ vật có mang gia sản gia tài thông qua 1 đối tượng người tiêu dùng nhưng thương hiệu khóa khớp ứng với tên thuộc tính trong tủ chứa đồ.

Các Loại schemãng cầu sau được mang đến phép:

ArrayBooleanBufferDateMixed (A generic / flexible data type)NumberObjectIdStringHỗn hợp cùng ObjectId được định nghĩa theo thử dùng (“mongoose”) Schema.Types.

Xuất tế bào hìnhChúng ta Call constructor quy mô trên Mongoose với truyền nó cho tên tủ đồ và một tsi mê chiếu mang lại lược trang bị.

module.exports = mongoose.model(“Email”, emailSchema)

Chúng ta hãy kết hợp đoạn mã trên thành ./src/models/tin nhắn.js để xác minh nội dung của một mô hình cơ bản:

Create Record

Hãy tạo một biểu đạt của quy mô email với lưu lại nó vào cơ sở dữ liệu:

Trường _id được Mongo chế tạo tự động và là 1 trong những khóa chủ yếu của collection. Giá trị của chính nó là độc nhất.Giá trị của ngôi trường gmail được trả lại. Lưu ý nó là chữ in thường bởi nằm trong tính đúng trong các giản vật lowercase:true __v là trực thuộc tính versionKey được đặt lên trên mỗi tài liệu khi được chế tác bởi vì Mongoose. Giá trị của chính nó bao gồm câu chữ tài liệu.Nếu chúng ta nỗ lực tạo ra tiếp cùng với dự liệu như bên trên, bạn sẽ nhận ra một lỗi bởi trường gmail họ có mang là duy nhất.

Fetch Record

Hãy thử lấy lại bản ghi họ vẫn giữ vào cửa hàng dữ liệu trước kia. Lớp quy mô cho thấy một vài phương pháp tĩnh cùng nhằm thực hiện bên trên các đại lý tài liệu. Bây giờ đồng hồ họ sẽ kiếm tìm tìm làm hồ sơ mà lại bọn họ đã tạo ra trước đó bằng phương pháp sử dụng phương thức tra cứu cùng gửi gmail bên dưới dạng nhiều tự search tìm.

Hãy tạo nên một giản vật người tiêu dùng trong /src/models/user.js với fieldsfirstName và lastName:

let mongoose = require(“mongoose”)let userSchema = new mongoose.Schema( firstName: String, lastName: String)module.exports = mongoose.model(“User”, userSchema)Virtual PropertyMột số nằm trong tính ảo ko tốt nhất thiết bắt buộc là tồn tại vào đại lý tài liệu. Chúng ta có thể thêm nó vào giản thiết bị của bọn họ như một bạn giúp đỡ để có được và cấu hình thiết lập những quý hiếm.

Hãy tạo ra một nằm trong tính ảo Điện thoại tư vấn là fullName hoàn toàn có thể được áp dụng để đặt các quý hiếm trên firstName và lastName với mang chúng nlỗi một quý giá phối kết hợp Lúc đọc:

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)Call lại nhằm nhấn cùng đặt bắt buộc thực hiện từ khóa chức năng do bọn họ phải truy cập vào quy mô thông qua từ bỏ khóa này. Sử dụng công dụng mũi tên chất béo đã thay đổi điều đó đề cập tới.

Xem thêm: Rợn Người Với 10 Nơi Đáng Sợ Nhất Thế Giới, Top 19 Địa Điểm Bí Ẩn, Đáng Sợ Nhất Trên Thế Giới

Bây giờ đồng hồ, chúng ta có thể đặt firstName với lastName bằng phương pháp gán một cực hiếm cho fullName:

let Mã Sản Phẩm = new UserModel()Mã Sản Phẩm.fullName = “Thomas Anderson”console.log(mã sản phẩm.toJSON()) // Output đầu ra mã sản phẩm fields as JSONconsole.log()console.log(Mã Sản Phẩm.fullName) // Output đầu ra the full nameĐoạn mã trên sẽ xuất ra phần nhiều điều sau: _id: 5a7a4248550ebb9fafd898cf, firstName: “Thomas”, lastName: “Anderson”

Các pmùi hương thứcChúng ta có thể tạo thành các cách làm tuỳ chỉnh bên trên lược vật dụng và truy cập bọn chúng trải qua mô hình mẫu mã. Những cách thức này sẽ có quyền truy vấn vào đối tượng người dùng mô hình với bọn chúng có thể được sử dụng. ví dụ như, bạn cũng có thể search tất cả những người tất cả thuộc tên.

Trong ví dụ này, bọn họ hãy chế tạo một hàm để trả lại tên cho tất cả những người cần sử dụng bây giờ. Hãy thêm 1 cách tiến hành helper tùy chỉnh Gọi là getInitials vào giản đồ:

userSchema.methods.getInitials = function() return this.firstName + this.lastNamePhương thơm pháp này đang hoàn toàn có thể truy cập thông qua 1 quy mô ví dụ:

let Mã Sản Phẩm = new UserModel( firstName: “Thomas”, lastName: “Anderson”)let initials = model.getInitials()console.log(initials) // This will output: TAPmùi hương pháp tĩnhTương từ bỏ như những cách tiến hành dụ, chúng ta cũng có thể chế tạo các cách tiến hành tĩnh trên lược đồ dùng. Hãy tạo thành một phương thức để mang vớ từ đầu đến chân sử dụng vào các đại lý dữ liệu:

userSchema.statics.getUsers = function() return new Promise((resolve sầu, reject) => this.find((err, docs) => if(err) console.error(err) return reject(err) resolve(docs) ) )Call getUsers trên lớp Model sẽ trả lại vớ từ đầu đến chân sử dụng vào cửa hàng dữ 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à một trong những giải pháp tiếp cận tốt đẹp nhất để tiến hành một giao diện thúc đẩy các đại lý dữ liệu trên các tủ đựng đồ và làm hồ sơ.MiddlewareMiddleware là những công dụng chạy làm việc những quá trình rõ ràng của con đường ống dẫn. Mongoose hỗ trợ trung gian cho các chuyển động sau:

Tổng hợpTài liệuMô hìnhTruy vấnVí dụ, những mô hình gồm tác dụng trước cùng sau bao gồm nhị tsay mê số:

Loại sự kiện (“init”, “validate”, “save”, “remove”)Một gọi lại được triển khai cùng với điều đó tham khảo ví dụ mô hình


Chuyên mục: Thông tin