Trong bài này chúng ta vẫn khám phá về tư tưởng Schemas trong Mongoose. Chắc hẳn vào bài xích trước các bạn cũng đã biết được Schemas được dùng để triển khai gì? Và cách áp dụng cơ bạn dạng của chính nó. Trong trường thích hợp chúng ta chưa hiểu rõ về có mang Schemas bạn cũng có thể gạnh thăm bài viết những bước đầu có tác dụng thân quen với Mongoose. Trong bài này chúng bản thân đang cùng nhau đi tìm kiếm phát âm sâu rộng về nó.

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

1. Chỉ định một Schemas trong Mongoose

Để thao tác làm việc với Mongoose sau khoản thời gian thực hiện connection thì họ đang ban đầu với cùng 1 Schema. Mỗi Schemas phần đông được hướng đẫn cho tới một collection trong MongoDB với từ kia khẳng định hình "cỗ khung" cho các document trong collection được chỉ đinc đó. Ở phía trên mình gồm một Schemas.


var mongoose = require("mongoose");var Schema = mongoose.Schema;var blogSchema = new Schema( title: String, // String is shorth& for type: String author: String, body: String, comments: < body: String, date: Date >, date: type: Date, default: Date.now , hidden: Boolean, meta: votes: Number, favs: Number );
Mỗi key vào object truyền vào class new Schema ví như (title, author, body toàn thân,..) được hướng dẫn và chỉ định là 1 thuộc tính của một document, mỗi value trong object ( nlỗi vào ví dụ là String, Boolean, Number) vẫn thay mặt mang lại hình dáng dữ liệu được thực hiện ( SchemaType ). Trong ví dụ trên, bọn họ bao gồm ở trong tính title , toàn bộ những quý hiếm của thuộc tính này sẽ tiến hành gửi thành dạng chuỗi (String).

Chúng ta gồm một số trong những mẫu mã Schema (Schema Type) bao hàm :

StringNumberDateBufferBooleanMixedObjectIdArrayDecimal128Map

2. Khởi chế tác một Model vào Mongoose

Để thực hiện được một Schema, họ phải chuyển blogSchema bên trên thành một Model bắt đầu có thể thao tác làm việc với nó. Để tiến hành biến đổi sử dụng cú pháp :


var mongoose = require("mongoose");var Schema = mongoose.Schema;//Khai báo một Schemavar blogSchema = new Schema( title: String, // String is shorth& for type: String author: String, body: String, comments: < body: String, date: Date >, date: type: Date, default: Date.now , hidden: Boolean, meta: votes: Number, favs: Number );//Thực hiện biến hóa từ bỏ Schema lịch sự Modelvar Blog = mongoose.model("Blog", blogSchema);

3. Instance methods trong Mongoose

Khi một Model được khởi chế tạo, chúng ta có thể tạo nên các documents bởi Model. Các document có không ít thủ tục được tạo ra sẵn trong chúng. Bên cạnh đó, chúng ta có thể thêm các thủ tục cho các documents.

Các method hoàn toàn có thể được chỉ định và hướng dẫn vào Schema sẽ giúp đỡ triển khai những bài toán tương quan mang lại Schema Document đó cùng giữ cho các đoạn code được tổ chức cụ thể rộng.

Xem thêm: Vợ Anh Hùng Liệt Sĩ Nguyễn Văn Trỗi Là Ai, Nguyễn Văn Trỗi (1940


// Khởi chế tác một Schemavar animalSchema = new Schema( name: String, type: String );// Gán một hàm đến object "methods" của animalSchemaanimalSchema.methods.findSimilarTypes = function(cb) return this.model("Animal").find( type: this.type , cb);;
Ngay hiện giờ toàn bộ những document vào animal đã bao gồm cách làm findSimilarTypes trong bọn chúng, bạn có thể hotline bất cứ cơ hội nào.


var Animal = mongoose.model("Animal", animalSchema);var dog = new Animal( type: "dog" );dog.findSimilarTypes(function(err, dogs) console.log(dogs); // woof);
Có một vài xem xét Khi sử dụng instance methodsmongoose chỉ dẫn như:

Không yêu cầu ghi đè một document.Trong ví dụ trên bản thân áp dụng Schema.methods, ngoại giả còn rất có thể thực hiện cách làm Schema.method() nhằm thay thế. Hai tác dụng tra về như nhau.Không chỉ định và hướng dẫn method bằng arrow function ( => ) vào ES6, do arrow function không hỗ trợ biến chuyển this

4. Schema Statics vào Mongoose

Schema Statics được thực hiện để xử trí những tác vụ liên quan trực kế tiếp Model, quan niệm này khác cùng với Instance methods ( giải pháp xử lý các câu hỏi tương quan mang đến Schema document ). Chúng ta có thể thêm một Statics vào một trong những Schema bằng cách thêm một function vào object schema"s static.


// Tạo một statics function bằng cách thêm một objectanimalSchema.statics.findByName = function(name) return this.find( name: new RegExp(name, "i") );;// hoặc thêm bằng phương pháp call một hàm.animalSchema.static("findByBreed", function(breed) return this.find( breed ););const Animal = mongoose.model("Animal", animalSchema);let animals = await Animal.findByName("fido");animls = animals.concat(await Animal.findByBreed("Poodle"));

5. Query Helper

Query Helpers là một cách tiến hành góp chúng ta có thể không ngừng mở rộng các câu tầm nã vấn của người tiêu dùng, y như là Instance method mà lại chũm vào kia áp dụng cho các câu truy vấn. Chúng ta gồm một ví dụ như bên dưới:


animalSchema.query.byName = function(name) return this.where( name: new RegExp(name, "i") );;var Animal = mongoose.model("Animal", animalSchema);Animal.find().byName("fido").exec(function(err, animals) console.log(animals););Animal.findOne().byName("fido").exec(function(err, animal) console.log(animal););

6. Virtuals

Virtuals (ảo hóa) là một trong những ở trong tính của một document mà bạn có thể làm việc bắt đầu một giá trị mà ko đề xuất thêm tuyệt, lấy trường đoản cú MongoDB. Nó rất có lợi đến vấn đề định dạng hoặc phối hợp những ngôi trường, trong khi kia lập trình viên khôn xiết tiện lợi có thể triển khai câu hỏi phối kết hợp một quý giá thành các cực hiếm nhằm tàng trữ.

Ở phía trên bản thân triển khai chế tạo một document gồm các ngôi trường nhỏng first, last :


// Chỉ định một Schema var personSchema = new Schema( name: first: String, last: String ); // Đưa nó vào trong 1 Modal var Person = mongoose.model("Person", personSchema); // Tiến hành tạo môt document var axl = new Person( name: first: "", last: "Rose" );
Trong trường thích hợp bạn nên nối những chuỗi này nhiều lần thì chương trình sẽ khá cồng kềnh và khó quản ngại lí, vì thế Mongoose có thể chấp nhận được họ thêm những thuộc tính ảo hóa (Virtuals). Ví dụ, mình đang thêm 1 thuộc tính ảo cho Schame bên trên có tên là fullName :


personSchema.virtual("fullName").get(function () return this.name.first + " " + this.name.last;);
Trong nội dung bài viết này họ sẽ mày mò về Schemas vào Mongoose DB, vô cùng ao ước nội dung bài viết này để giúp ích cho bạn. Cảm ơn chúng ta đang ghẹ thăm bài viết.

Xem thêm: Tiểu Sử Diễn Viên Ngô Hải Nam Tiểu Sự Nghiệp, Người Yêu Của Hot Boy

Bình luận đã đóng góp, ví như gồm thắc mắc hãy đặt câu hỏi tại hoicode.com để admin trả lời.


20trăng tròn - bigbiglands.com. All Right Reserved Theme GoodNews, nền tảng Codeigniter, VPS tải tại Tinohost
*


Nếu các bạn phát hiện lỗi không đúng links, ngôn từ sai, hay 1 lỗi bất cứ nào đó bên trên trang này thì hãy cho bạn biết nhé. Cám ơn bạn!


Chuyên mục: Ý NGHĨA
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *