Giới thiệu về Mongoose cho MongoDB và sentayho.com.vn

Mongoose là 1 framework JavaScript thường được dùng trong ứng dụng sentayho.com.vn có database là MongoDB. Trong bài viết này, tôi sẽ giới thiệu cho bạn Mongoose và MongoDB, và quan yếu hơn là đâu là nơi những kỹ thuật này ưu thích có ứng dụng của bạn.

MongoDB là gì?

Hãy khởi đầu có MongoDB. MongoDB là database (1 cơ sở dữ liệu) lưu dữ liệu của bạn dưới dạng tài liệu. Thông thường, những tài liệu (doc) này giống có cấu trúc giống như JSON:

{ firstName: “Jamie”, lastName: “Munro” }

1 doc được đặt trong 1 assortment. Dí dụ, thí dụ doc bên trên định nghĩa 1 đối tượng consumer. Đối tượng consumer này tiếp theo thường là 1 phần của assortment được gọi là customers.

1 trong những chi tiết quan yếu có MongoDB là tính linh hoạt trong cấu trúc của nó. Mặc dầu trong thí dụ trước tiên, đối tượng consumer chứa thuộc tính firstName và lastName, những thuộc tính này ko phải} trong mọi doc của từng consumer, ấy là 1 phần trong assortment của customers. Đây là điều khiến cho MongoDB siêu khác có những database SQL như MySQL hoặc Microsoft SQL Server, những database ấy bắc buộc schema được định nghĩa rõ ràng cho từng đối tượng mà nó lưu trữ.

Khả năng tạo những dynamic object được lưu trữ dưới dạng paperwork trong database chính là lúc Mongoose hữu dụng.

Mongoose là gì?

Mongoose là 1 Object Doc Mapper (ODM). Điều này có nghĩa là Mongoose cho phép bạn định nghĩa những object (đối tượng) có 1 schema được định nghĩa rõ ràng, được ánh xạ tới 1 MongoDB doc.

Mongoose phân phối 1 số lượng đáng sửng sốt những chức năng cho việc tạo ra và khiến việc có những schema. Mongoose hiện có 8 SchemaTypes. Ấy là:

  1. String
  2. Quantity
  3. Date
  4. Buffer
  5. Boolean
  6. Combined
  7. ObjectId
  8. Array

Từng loại dữ liệu cho phép bạn xác định:

  • giá trị mặc định
  • hàm xác thực
  • cho biết 1 trường phải}
  • hàm get cho phép bạn thực hiện dữ liệu trước lúc nó được trả về như 1 object
  • hàm set cho phép bạn thực hiện dữ liệu trước lúc nó được lưu vào cơ sở dữ liệu
  • tạo indexes cho phép dữ liệu được nạp nhanh hơn

Bên cạnh những tùy thuộc} chọn phổ cập} này, 1 số kiểu dữ liệu nhất định cho phép bạn tùy thuộc} chỉnh thêm phương pháp dữ liệu được lưu trữ và truy xuất từ 1 database. Dí dụ, 1 kiểu dữ liệu String cũng cho phép bạn chỉ định những tùy thuộc} chọn bổ sung sau đây:

  • chuyển đổi nó thành chữ thường
  • chuyển đổi nó thành chữ in hoa
  • cắt dữ liệu trước lúc lưu lại
  • 1 biểu thức chính quy có thể giới hạn dữ liệu được phép lưu trong quy trình xác thực
  • 1 enum có thể định nghĩa 1 danh sách những string (chuỗi) hợp lệ

Những thuộc tính Quantity and Date đều tương trợ chỉ định 1 giá trị tối thiểu và cao nhất} cho phép cho subject ấy.

Bạn nên quen thuộc có gần như 8 kiểu dữ liệu. Tuy nhiên, có 1 số ngoại lệ có thể xảy ra có bạn, chẳng hạn như Buffer, Combined, ObjectId và Array.

Kiểu dữ liệu Buffer cho phép bạn lưu dữ liệu nhị phân. 1 thí dụ phổ cập} 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 PDF.

Kiểu information Combined biến thuộc 1 tính thành 1 subject “something goes” (thứ gì cũng được). Subject này so sánh nhà phát triển thành có thể dùng MongoDB ra sao vì nó ko có cấu trúc xác định. Hãy cảnh giác có việc dùng kiểu dữ liệu này vì bạn sẽ mất nhiều tính năng tuyệt vời mà Mongoose phân phối, chẳng hạn như xác thực dữ liệu và tìm ra những thay đổi đổi của entity để tự động động biết để cập nhật thuộc tính lúc lưu.

Kiểu dữ liệu ObjectId thường chỉ định 1 hợp tác tới 1 tài liệu khác trong database của bạn. Dí dụ: ví dụ bạn có 1 bộ assortment về books (sách) và creator (tác giả), ebook doc có thể chứa thuộc tính ObjectId có tham chiếu tới 1 creator cụ thể của doc.

Kiểu dữ liệu Array cho phép bạn lưu trữ những mảng giống như JavaScript. Sở hữu kiểu dữ liệu Array, bạn có thể thực hành những chức năng phổ cập} của JavaScript array, chẳng hạn như push, pop, shift, slice, v.v.

Tóm tắt

Trước lúc tiếp tục và tạo ra 1 số code, tôi chỉ muốn tóm tắt lại những gì chúng ta vừa học được. MongoDB là 1 database cho phép bạn lưu trữ những doc có cấu trúc động. Những doc này được lưu bên trong 1 assortment.

Mongoose là 1 thư viện JavaScript cho phép bạn định nghĩa những schema có dữ liệu được định kiểu rõ ràng. Lúc 1 schema được định nghĩa, Mongoose cho phép bạn tạo 1 Mannequin dựa trên 1 schema cụ thể. Mannequin của Mongoose tiếp theo được ánh xạ tới 1 MongoDB doc thông qua định nghĩa schema của Mannequin.

Lúc bạn đã xác định những schema và mannequin của mình, Mongoose chứa nhiều hàm khác nhau cho phép bạn xác thực tính hợp lệ, lưu, xóa và truy vấn dữ liệu của bạn bằng những hàm MongoDB phổ cập}. Tôi sẽ nói về việc này nhiều hơn có những thí dụ code cụ thể.

Cài đặt MongoDB

Trước lúc chúng ta có thể khởi đầu tạo những schema và mannequin của Mongoose, MongoDB nên được cài đặt và cấu hình. Tôi khuyến nghị bạn nên truy cập trang TMongoDB’s Obtain web page. Có 1 số tùy thuộc} chọn khác nhau đã có sẵn để cài đặt. Tôi đã hợp tác có Neighborhood Server. Điều này cho phép bạn cài đặt 1 phiên bản cụ thể cho hệ điều hành của bạn. MongoDB cũng phân phối 1 Enterprise Server và tương trợ cài đặt đám mây. Lúc toàn bộ những cuốn sách có thể được viết về việc cài đặt, điều chỉnh và giám sát MongoDB, thì tôi sẽ bám chặt vào Neighborhood Server.

1 lúc bạn đã tải về và cài đặt MongoDB cho hệ điều hành của bạn lựa chọn, bạn sẽ cần nên khởi đầu khởi động database. Tôi khuyên bạn nên truy cập vào phần tài liệu của MongoDB về phương pháp cài đặt MongoDB Neighborhood Version.

Xem Thêm  Dego Finance (DEGO) là gì? Thông tin về DEGO Coin new nhất

Tôi sẽ đợi bạn cấu hình MongoDB. Lúc bạn đã sẵn sàng, chúng ta có thể chuyển sang thiết lập Mongoose để kết nối có database MongoDB vừa được cài đặt của bạn.

Thiết lập Mongoose

Mongoose là 1 framework JavaScript, và tôi sẽ dùng trong 1 ứng dụng sentayho.com.vn. Giả dụ bạn đã cài đặt sentayho.com.vn, bạn có thể chuyển sang bước tiếp theo. Giả dụ bạn chưa cài đặt sentayho.com.vn, tôi khuyên bạn nên khởi đầu bằng phương pháp truy cập trang sentayho.com.vn Obtain web page và chọn trình cài đặt cho hệ điều hành của bạn.

Sở hữu sentayho.com.vn đã được thiết lập và sẵn sàng hoạt động, tôi sẽ tạo 1 ứng dụng new và tiếp theo cài đặt Mongoose NPM Bundle.

Sở hữu dấu nhắc lệnh được đặt trên nơi bạn muốn cài đặt ứng dụng của mình, bạn có thể chạy lệnh sau:

mkdir mongoose_basics cd mongoose_basics npm init

Để khởi tạo ứng dụng của tôi, tôi để mọi thứ khiến giá trị mặc định của chúng. Hiện tại} tôi sẽ cài đặt gói mongoose như sau:

npm set up mongoose -save

Sở hữu đa số điều kiện cần có đã được cấu hình, chúng ta hãy kết nối có 1 database MongoDB. Tôi đã đặt đoạn code sau bên trong file sentayho.com.vn vì tôi đã chọn nó khiến nơi khởi đầu cho ứng dụng của mình:

var mongoose = require(‘mongoose’); sentayho.com.vnect(‘mongodb://localhost/mongoose_basics’);

Dòng code trước tiên gồm thư viện mongoose. Tiếp theo, tôi mở 1 kết nối tới database mà tôi gọi là mongoose_basics bằng phương pháp dùng hàm join.

Hàm join chấp nhận 2 tham số tùy thuộc} chọn khác. Tham số thứ 2 là đối tượng của những tùy thuộc} chọn, trên ấy bạn có thể định nghĩa username và password, ví dụ cần. Tham số thứ bố, cũng có thể là tham số thứ 2 ví dụ bạn ko có tùy thuộc} chọn nào, là 1 hàm callback sau khoản thời gian cố gắng kết nối. Hàm callback có thể được dùng theo 1 trong 2 phương pháp:

sentayho.com.vnect(uri, choices, operate(error) { // Verify error in preliminary connection. There isn’t any 2nd param lớn the callback. }); // Or utilizing guarantees sentayho.com.vnect(uri, choices).then( () => { /** prepared lớn use. The `mongoose.join()` promise resolves lớn undefined. */ }, err => { /** deal with preliminary connection error */ } );

Để giảm thiểu nên giới thiệu về JavaScript Guarantees, tôi sẽ dùng phương pháp trước tiên. Dưới đây là file sentayho.com.vn được cập nhật:

var mongoose = require(‘mongoose’); sentayho.com.vnect(‘mongodb://localhost/mongoose_basics’, operate (err) { if (err) throw err; sentayho.com.vn(‘Efficiently linked’); });

Giả dụ có lỗi xảy ra lúc kết nối có database, 1 exception sẽ được trả lại và đa số những xử lý tiếp theo sẽ bị hoãn. Lúc ko có lỗi, tôi đã ghi lại 1 thông tin thành công tới console.

Mongoose trên sự thật} được thiết lập và kết nối có 1 cơ sở dữ liệu được gọi là mongoose_basics. Kết nối MongoDB của tôi ko dùng username, password hoặc 1 port đặc biệt nào. Giả dụ bạn cần đặt những tùy thuộc} chọn này hoặc bất kỳ tùy thuộc} chọn nào khác trong lúc kết nối, tôi khuyên bạn nên xem lại Mongoose Documentation on connecting. Tài liệu này giải thích chi tiết về nhiều tùy thuộc} chọn có sẵn cũng như phương pháp tạo nhiều kết nối, connection pooling, replicas, v.v.

Sở hữu 1 kết nối thành công, chúng ta hãy chuyển sang định nghĩa 1 schema cho Mongoose.

Định nghĩa schema cho Mongoose

Trong phần giới thiệu, tôi đã cho thấy 1 đối tượng consumer có chứa 2 thuộc tính: firstName và lastName. Trong thí dụ sau, tôi đã dịch doc ấy thành 1 schema của Mongoose:

var userSchema = sentayho.com.vnma({ firstName: String, lastName: String });

Đây là 1 schema siêu cơ bản chỉ chứa 2 đặc tính mà ko có thuộc tính nào hợp tác có nó. Hãy mở rộng thí dụ này bằng phương pháp chuyển đổi những thuộc tính tên và họ thành những đối tượng con của thuộc tính title. Thuộc tính title sẽ bao gồm cả tên và họ. Tôi cũng sẽ thêm 1 thuộc tính created theo kiểu Date.

var userSchema = sentayho.com.vnma({ title: { firstName: String, lastName: String }, created: Date });

Như bạn có thể thấy, Mongoose cho phép tôi tạo những schema siêu linh hoạt có nhiều hài hòa khả dĩ khác nhau theo phương pháp tôi có thể tổ chức information của mình.

Trong thí dụ tiếp theo này, tôi sẽ tạo ra 2 schema new để minh họa phương pháp tạo mối quan hệ có 1 lược đồ khác: creator và ebook. Schema của ebook sẽ chứa 1 tham chiếu tới schema của creator.

var authorSchema = sentayho.com.vnma({ _id: sentayho.com.vnctId, title: { firstName: String, lastName: String }, biography: String, twitter: String, fb: String, linkedin: String, profilePicture: Buffer, created: { sort: Date, default: sentayho.com.vn } });

Trên đây là schema của creator đã mở rộng dựa trên những khái niệm schema của consumer mà tôi đã tạo trong thí dụ trước. Để hợp tác Writer và Ebook có nhau, thuộc tính trước tiên của schema của creator là 1 thuộc tính _id, và ấy kiểu schema ObjectId. _id là cú pháp phổ cập} để tạo khóa chính trong Mongoose và MongoDB. Tiếp tục, giống như schema consumer, tôi đã định nghĩa 1 thuộc tính title có chứa tên và họ của tác giả.

Mở rộng theo schema consumer, creator chứa 1 số loại schema theo kiểu String. Tôi cũng đã thêm 1 loại schema Buffer có thể chứa ảnh giấy tờ của creator. Thuộc tính cuối cùng là ngày tạo ra creator; tuy nhiên, bạn có thể nhận biết nó được tạo ra tương đối khác vì nó đã có 1 giá trị mặc định đã được xác định “now”. Lúc creator được lưu vào database, thuộc tính này sẽ được đặt thành date/time hiện tại.

Để hoàn thành những thí dụ schema, hãy tạo 1 schema của ebook có 1 tham chiếu tới creator bằng phương pháp dùng kiểu schema ObjectId:

var bookSchema = sentayho.com.vnma({ _id: sentayho.com.vnctId, title: String, abstract: String, isbn: String, thumbnail: Buffer, creator: { sort: sentayho.com.vnctId, ref: ‘Writer’ }, rankings: [ { summary: String, detail: String, numberOfStars: Number, created: { type: Date, default: sentayho.com.vn } } ], created: { sort: Date, default: sentayho.com.vn } });

Xem Thêm  Fan Solely Nghĩa Là Gì ? Có Tốn Điện Ko ? Phương pháp Sử Dụng Máy Lạnh Daikin Ftkc25Qvmv

Lược đồ ebook chứa 1 số thuộc tính của kiểu String. Như đã đề cập trên trên, nó chứa 1 tham chiếu tới lược đồ creator. Để minh họa thêm những định nghĩa schema mạnh mẽ, schema ebook cũng chứa 1 Array những rankings. Từng xếp hạng bao gồm abstract, element, numberOfStars, và createddate (ngày tạo ra).

Mongoose cho phép bạn tạo ra những schema có tham chiếu tới những schema khác, hoặc như trong thí dụ trên có thuộc tính rankings, nó cho phép bạn tạo 1 Array những thuộc tính con có thể chứa trong 1 schema có liên quan (như ebook tới creator) hoặc nội tuyến như trong thí dụ trên (có ebook cho 1 Array rankings).

Tạo và lưu những mannequin của Mongoose

Lúc những schema của creator và ebook chứng minh tính linh hoạt của Mongoose, tôi sẽ tiếp tục dùng những schema ấy và lấy ra 1 mannequin Writer và Ebook từ chúng.

var Writer = sentayho.com.vnl(‘Writer’, authorSchema); var Ebook = sentayho.com.vnl(‘Ebook’, bookSchema);

1 Mannequin của Mongoose, lúc được lưu lại, tạo 1 Doc trong MongoDB có những thuộc tính như đã được định nghĩa từ schema mà nó bắt nguồn.

Để minh hoạ cho việc tạo và lưu 1 object, trong thí dụ tiếp theo này, tôi sẽ tạo ra 1 số object: 1 Mannequin Writer và 1 số Mannequin cho Ebook. Lúc được tạo ra, những object này sẽ được lưu lại thành MongoDB bằng phương pháp dùng phương thức save của Mannequin.

var jamieAuthor = new Writer { _id: new sentayho.com.vnctId(), title: { firstName: ‘Jamie’, lastName: ‘Munro’ }, biography: ‘Jamie is the creator of sentayho.com.vn MVC 5 with Bootstrap and sentayho.com.vn.’, twitter: ‘https://twitter.com/endyourif’, fb: ‘https://www.fb.com/Finish-Your-If-194251957252562/’ }; sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Writer efficiently saved.’); var mvcBook = new Ebook { _id: new sentayho.com.vnctId(), title: ‘sentayho.com.vn MVC 5 with Bootstrap and sentayho.com.vn’, creator: jamieAuthor._id, rankings:[{ summary: ‘Great read’ }] }; sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Ebook efficiently saved.’); }); var knockoutBook = new Ebook { _id: new sentayho.com.vnctId(), title: ‘Knockout.js: Constructing Dynamic Shopper-Aspect Internet Functions’, creator: jamieAuthor._id }; sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Ebook efficiently saved.’); }); });

Trong thí dụ trên, tôi đã vô tình dẫn 1 tham chiếu tới 2 cuốn sách new đây nhất của tôi. Dí dụ khởi đầu bằng phương pháp tạo và lưu 1 jamieObject được tạo ra từ 1 mannequin Writer. Bên trong hàm save của jamieObject, ví dụ 1 lỗi xảy ra, ứng dụng sẽ xuất ra 1 exception. Lúc việc lưu lại thành công, bên trong hàm save, 2 đối tượng ebook được tạo ra và lưu lại. Tương tự động như jamieObject, ví dụ 1 lỗi xảy ra lúc đang lưu, 1 lỗi được xuất ra; ví dụ ko, thông tin thành công sẽ được xuất ra trong bảng điều khiển.

Để tạo tham chiếu tới Writer, đối tượng ebook chỉ ra cả tham chiếu tới khóa chính _id của schema creator trong thuộc tính creator của lược đồ ebook.

Xác thực dữ liệu trước lúc lưu lại

Khá phổ cập} có những dữ liệu mà sẽ tạo ra 1 mannequin được nhập vào bởi 1 kind trên 1 web site. Vì nguyên nhân này, bạn nên xác nhận tính hợp lệ của dữ liệu này trước lúc lưu Mannequin vào MongoDB.

Trong thí dụ tiếp theo này, tôi đã cập nhật schema creator trước ấy để thêm xác nhận vào những thuộc tính sau: firstName, twitter, fb và linkedin.

var authorSchema = sentayho.com.vnma({ _id: sentayho.com.vnctId, title: { firstName: { sort: String, required: true }, lastName: String }, biography: String, twitter: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://twitter.com/’) === 0; }, message: ‘Twitter deal with should begin with sentayho.com.vn/’ } }, fb: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://www.fb.com/’) === 0; }, message: ‘Fb should begin with sentayho.com.vn/’ } }, linkedin: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://www.linkedin.com/’) === 0; }, message: ‘LinkedIn should begin with sentayho.com.vn/’ } }, profilePicture: Buffer, created: { sort: Date, default: sentayho.com.vn } });

Thuộc tính firstName đã được gán cho thuộc tính required. Hiện tại} lúc tôi gọi hàm save, Mongoose sẽ trả về 1 lỗi có 1 thông tin cho biết thuộc tính firstName là phải}. Tôi đã chọn ko cho thuộc tính lastName thành required trong trường hợp Cher hoặc Madonna là creator trong database của tôi.

Những thuộc tính twitter, fb và linkedin đều có những trình xác thực tùy thuộc} chỉnh siêu giống nhau được vận dụng cho chúng. Họ đảm bảo rằng những giá trị khởi đầu có tên miền tương ứng của những mạng xã hội. Những subject này ko phải}, vì vậy trình xác thực sẽ chỉ được vận dụng lúc dữ liệu được phân phối cho thuộc tính ấy.

Kiếm tìm và cập nhật dữ liệu

Giới thiệu về Mongoose sẽ ko hoàn chỉnh ví dụ ko có thí dụ về kiếm tìm bản ghi (document) và cập nhật 1 hoặc nhiều thuộc tính trên đối tượng ấy.

Mongoose phân phối 1 số chức năng khác nhau để tìm dữ liệu cho 1 Mannequin cụ thể. Những hàm discover, findOne và findById.

Hàm discover và findOne đều chấp nhận 1 object khiến đầu vào cho phép những kiếm tìm phức tạp, trong lúc findById chỉ chấp nhận 1 giá trị duy nhất có hàm callback (sẽ có 1 thí dụ theo sau). Trong thí dụ tiếp theo này, tôi sẽ minh họa phương pháp tìm đa số những sách chứa string “mvc” trong tiêu đề.

sentayho.com.vn({ title: /mvc/i }).exec(operate(err, books) { if (err) throw err; sentayho.com.vn(books); });

Bên trong hàm discover, tôi đang kiếm tìm chuỗi “mvc” ko phân biệt chữ hoa chữ thường trong thuộc tính title. Điều này được thực hành bằng phương pháp dùng cú pháp giống có việc tìm 1 string có JavaScript.

Việc gọi hàm discover cũng được hợp tác có những phương thức truy vấn khác, chẳng hạn như the place, and, or, restrict, type, any, v.v.

Hãy mở rộng thí dụ trước nhằm giới hạn kết quả của chúng ta có 5 ebook trước tiên và sắp xếp theo ngày tạo (created date) giảm dần. Nó sẽ trả về cao nhất} 5 ebook sắp đây nhất có chứa “mvc” trong tựa đề.

sentayho.com.vn({ title: /mvc/i }).type(‘-created’) .restrict(5) .exec(operate(err, books) { if (err) throw err; sentayho.com.vn(books); });

Sau thời điểm vận dụng hàm discover, thứ tự động của những hàm khác ko quan yếu vì đa số những hàm có kết nối được biên dịch cùng nhau thành 1 truy vấn duy nhất và ko được thực hành cho tới lúc hàm exec được gọi.

Xem Thêm  Resale là gì? Những điều cần biết lúc sắm hàng Resale | BD Analysis – Khoa học và đời sống

Như tôi đã đề cập trước ấy, hàm findById được thực hành tương đối khác 1 chút. Hàm này thực hành ngay nagy lập tức và chấp nhận 1 hàm callback, thay đổi vì cho phép 1 chuỗi kết nối những hàm. Trong thí dụ tiếp theo, tôi đang truy vấn 1 creator cụ thể bằng _id của họ.

sentayho.com.vnById(’59b31406beefa1082819e72f’, operate(err, creator) { if (err) throw err; sentayho.com.vn(creator); });

_id trong trường hợp của bạn có thể tương đối khác. Tôi đã sao chép _id này từ 1 sentayho.com.vn trước ấy lúc tìm danh sách những ebook có “mvc” trong tựa đề.

Lúc 1 object đã được trả về, bạn có thể sửa đổi bất kỳ thuộc tính nào của object ấy để cập nhật. Lúc bạn đã thực hành những thay đổi đổi cần thiết, bạn gọi phương thức save, giống như lúc bạn đang tạo object. Trong thí dụ tiếp theo, tôi sẽ mở rộng thí dụ findbyId và cập nhật thuộc tính linkedin của creator.

sentayho.com.vnById(’59b31406beefa1082819e72f’, operate(err, creator) { if (err) throw err; sentayho.com.vnedin = ‘https://www.linkedin.com/in/jamie-munro-8064ba1a/’; sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Writer up to date efficiently’); }); });

Sau thời điểm 1 creator được truy xuất thành công, thuộc tính linkedin được thiết lập và hàm save được gọi. Mongoose có thể tìm ra rằng thuộc tính linkedin đã được thay đổi đổi và nó sẽ gửi 1 thông tin cập nhật tới MongoDB chỉ cho những thuộc tính đã được sửa đổi. Giả dụ xảy ra lỗi lúc lưu, 1 exception sẽ được gửi đi và sẽ tạm giới hạn ứng dụng. Lúc thành công, 1 thông tin thành công được ghi vào console.

Mongoose cũng phân phối 2 hàm bổ sung để kiếm tìm 1 đối tượng và lưu lại cùng lúc có những hàm được đặt tên khá ưu thích: findByIdAndUpdate và findOneAndUpdate. Hãy nâng cấp thí dụ trước để dùng findByIdAndUpdate.

sentayho.com.vnByIdAndUpdate(’59b31406beefa1082819e72f’, { linkedin: ‘https://www.linkedin.com/in/jamie-munro-8064ba1a/’ }, operate(err, creator) { if (err) throw err; sentayho.com.vn(creator); });

Trong thí dụ trước, những thuộc tính để cập nhật được phân phối dưới dạng 1 đối tượng cho tham số thứ 2 của hàm findByIdAndUpdate. Hàm callback trên sự thật} là tham số thứ bố. Lúc cập nhật thành công, object creator được trả về có chứa thông tin đã được cập nhật. Điều này được ghi vào console để xem những thuộc tính đã được cập nhật của tác giả.

Dí dụ code sau đa số

Trong suốt bài viết này, tôi đã phân phối những trích đoạn code bé xác định 1 hành động siêu cụ thể, chẳng hạn như tạo schema, tạo mannequin, v.v. Hãy hài hòa chúng lại có nhau trong 1 thí dụ toàn bộ.

Trước tiên, tôi đã tạo 2 file bổ sung: sentayho.com.vn và sentayho.com.vn. Những tệp này chứa những định nghĩa schema tương ứng của chúng và việc tạo ra mannequin. Dòng mã cuối cùng giúp cho mannequin sẵn sàng để dùng trong file sentayho.com.vn.

Hãy khởi đầu có file sentayho.com.vn:

var mongoose = require(‘mongoose’); var authorSchema = sentayho.com.vnma({ _id: sentayho.com.vnctId, title: { firstName: { sort: String, required: true }, lastName: String }, biography: String, twitter: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://twitter.com/’) === 0; }, message: ‘Twitter deal with should begin with sentayho.com.vn/’ } }, fb: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://www.fb.com/’) === 0; }, message: ‘Fb should begin with sentayho.com.vn/’ } }, linkedin: { sort: String, validate: { validator: operate(textual content) { return sentayho.com.vnxOf(‘https://www.linkedin.com/’) === 0; }, message: ‘LinkedIn should begin with sentayho.com.vn/’ } }, profilePicture: Buffer, created: { sort: Date, default: sentayho.com.vn } }); var Writer = sentayho.com.vnl(‘Writer’, authorSchema); sentayho.com.vnrts = Writer;

Tiếp theo là file sentayho.com.vn:

var mongoose = require(‘mongoose’); var bookSchema = sentayho.com.vnma({ _id: sentayho.com.vnctId, title: String, abstract: String, isbn: String, thumbnail: Buffer, creator: { sort: sentayho.com.vnctId, ref: ‘Writer’ }, rankings: [ { summary: String, detail: String, numberOfStars: Number, created: { type: Date, default: sentayho.com.vn } } ], created: { sort: Date, default: sentayho.com.vn } }); var Ebook = sentayho.com.vnl(‘Ebook’, bookSchema); sentayho.com.vnrts = Ebook;

Và cuối cùng, file sentayho.com.vn được cập nhật:

var mongoose = require(‘mongoose’); var Writer = require(‘./creator’); var Ebook = require(‘./ebook’); sentayho.com.vnect(‘mongodb://localhost/mongoose_basics’, operate (err) { if (err) throw err; sentayho.com.vn(‘Efficiently linked’); var jamieAuthor = new Writer({ _id: new sentayho.com.vnctId(), title: { firstName: ‘Jamie’, lastName: ‘Munro’ }, biography: ‘Jamie is the creator of sentayho.com.vn MVC 5 with Bootstrap and sentayho.com.vn.’, twitter: ‘https://twitter.com/endyourif’, fb: ‘https://www.fb.com/Finish-Your-If-194251957252562/’ }); sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Writer efficiently saved.’); var mvcBook = new Ebook({ _id: new sentayho.com.vnctId(), title: ‘sentayho.com.vn MVC 5 with Bootstrap and sentayho.com.vn’, creator: jamieAuthor._id, rankings:[{ summary: ‘Great read’ }] }); sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Ebook efficiently saved.’); }); var knockoutBook = new Ebook({ _id: new sentayho.com.vnctId(), title: ‘Knockout.js: Constructing Dynamic Shopper-Aspect Internet Functions’, creator: jamieAuthor._id }); sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Ebook efficiently saved.’); }); }); });

Trong thí dụ trên, đa số những hoạt động của Mongoose được chứa trong hàm join. Những file creator và ebook được bao kèm có hàm require sau khoản thời gian hợp tác có thư viện mongoose.

Sở hữu MongoDB đang chạy, trên sự thật} bạn có thể hoàn thành ứng dụng sentayho.com.vn toàn bộ bằng lệnh sau đây:

node sentayho.com.vn

Sau thời điểm tôi lưu 1 số information vào database của mình, tôi đã cập nhật file sentayho.com.vn có những hàm discover như sau:

var mongoose = require(‘mongoose’); var Writer = require(‘./creator’); var Ebook = require(‘./ebook’); sentayho.com.vnect(‘mongodb://localhost/mongoose_basics’, operate (err) { if (err) throw err; sentayho.com.vn(‘Efficiently linked’); sentayho.com.vn({ title: /mvc/i }).type(‘-created’) .restrict(5) .exec(operate(err, books) { if (err) throw err; sentayho.com.vn(books); }); sentayho.com.vnById(’59b31406beefa1082819e72f’, operate(err, creator) { if (err) throw err; sentayho.com.vnedin = ‘https://www.linkedin.com/in/jamie-munro-8064ba1a/’; sentayho.com.vn(operate(err) { if (err) throw err; sentayho.com.vn(‘Writer up to date efficiently’); }); }); sentayho.com.vnByIdAndUpdate(’59b31406beefa1082819e72f’, { linkedin: ‘https://www.linkedin.com/in/jamie-munro-8064ba1a/’ }, operate(err, creator) { if (err) throw err; sentayho.com.vn(creator); }); });

1 lần nữa, bạn có thể chạy ứng dụng bằng lệnh: node sentayho.com.vn.

Tóm tắt

Sau thời điểm đọc bài viết này, bạn sẽ có thể tạo những Mannequin và Schema vô cùng linh hoạt cho Mongose, vận 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 kiếm tìm những tài liệu đã được tạo.

Hy vọng trên sự thật} bạn cảm thấy thoải mái lúc dùng Mongoose. Giả dụ bạn đang tìm hiểu thêm, tôi sẽ đề nghị bạn xem những Mongoose Guides, những chỉ dẫn này nghiên cứu sâu hơn những chủ đề nâng cao như inhabitants, middleware, guarantees, v.v.

Joyful looking (poor Mongoose animal reference)!