Hướng dẫn can i use mongoose and mongodb together? - tôi có thể sử dụng mongoose và mongodb cùng nhau không?

Vâng, bạn nên, đó là một thực hành tốt.

npm install mongoose

Mongoose yêu cầu kết nối với cơ sở dữ liệu MongoDB. Bạn có thể sử dụng Yêu cầu () và kết nối với cơ sở dữ liệu được lưu trữ cục bộ với Mongoose.connect ().

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

Nếu bạn cần tạo các kết nối bổ sung, bạn có thể sử dụng Mongoose.CreateConnection (). Điều này có cùng một dạng URI cơ sở dữ liệu (với máy chủ, cơ sở dữ liệu, cổng, tùy chọn, v.v.) là Connect () và trả về một đối tượng kết nối)

Trong bài viết này, chúng tôi sẽ tìm hiểu làm thế nào Mongoose, một thư viện của bên thứ ba cho MongoDB, có thể giúp bạn cấu trúc và truy cập dữ liệu của bạn một cách dễ dàng.

Mongoose là gì?

Mongoose là một thư viện ODM (mô hình dữ liệu đối tượng) cho MongoDB. Mặc dù bạn không cần sử dụng công cụ mô hình hóa dữ liệu đối tượng (ODM) hoặc ánh xạ quan hệ đối tượng (ORM) để có trải nghiệm tuyệt vời với MongoDB, một số nhà phát triển thích chúng. Nhiều nhà phát triển Node.js chọn làm việc với Mongoose để giúp mô hình hóa dữ liệu, thực thi lược đồ, xác thực mô hình và thao tác dữ liệu chung. Và Mongoose làm cho những nhiệm vụ này dễ dàng.

Nếu bạn muốn nghe từ người bảo trì của Mongoose, Val Karpov, hãy nghe tập này của The MongoDB Podcast A!MongoDB Podcast a listen!

Tại sao Mongoose?

Theo mặc định, MongoDB có mô hình dữ liệu linh hoạt. Điều này làm cho cơ sở dữ liệu MongoDB rất dễ thay đổi và cập nhật trong tương lai. Nhưng rất nhiều nhà phát triển đã quen với việc có các lược đồ cứng nhắc.

Mongoose buộc một lược đồ bán cứng ngay từ đầu. Với Mongoose, các nhà phát triển phải xác định lược đồ và mô hình.

Lược đồ là gì?

Một lược đồ xác định cấu trúc của các tài liệu thu thập của bạn. Một lược đồ Mongoose ánh xạ trực tiếp vào một bộ sưu tập MongoDB.

Với các lược đồ, chúng tôi xác định từng trường và loại dữ liệu của nó. Các loại được phép là:

Một mô hình là gì?

Các mô hình lấy lược đồ của bạn và áp dụng nó vào từng tài liệu trong bộ sưu tập của nó.

Các mô hình chịu trách nhiệm cho tất cả các tương tác tài liệu như tạo, đọc, cập nhật và xóa (CRUD).

Một lưu ý quan trọng: Đối số đầu tiên được chuyển cho mô hình phải là hình thức số ít của tên bộ sưu tập của bạn. Mongoose tự động thay đổi điều này thành dạng số nhiều, biến nó thành chữ thường và sử dụng nó cho tên thu thập cơ sở dữ liệu.

Trong ví dụ này, Blog dịch sang bộ sưu tập blogs.Blog translates to the blogs collection.

Thiết lập môi trường

Hãy để thiết lập môi trường của chúng tôi. Tôi sẽ giả sử bạn đã cài đặt Node.js.Node.js installed already.

Chúng tôi sẽ chạy các lệnh sau từ thiết bị đầu cuối để đi:

Điều này sẽ tạo thư mục dự án, khởi tạo, cài đặt các gói chúng tôi cần và mở dự án trong mã VS.

Hãy để thêm một tập lệnh vào tệp package.json của chúng tôi để chạy dự án của chúng tôi. Chúng tôi cũng sẽ sử dụng các mô -đun ES thay vì JS thông thường, vì vậy chúng tôi cũng sẽ thêm mô -đun type. Điều này cũng sẽ cho phép chúng tôi sử dụng await cấp cao nhất.package.json file to run our project. We will also use ES Modules instead of Common JS, so we’ll add the module type as well. This will also allow us to use top-level await.

Kết nối với MongoDB

Bây giờ chúng tôi sẽ tạo tệp index.js và sử dụng Mongoose để kết nối với MongoDB.index.js file and use Mongoose to connect to MongoDB.

Bạn có thể kết nối với một ví dụ MongoDB địa phương, nhưng đối với bài viết này, chúng tôi sẽ sử dụng cụm Atlas MongoDB miễn phí. Nếu bạn không có tài khoản, thật dễ dàng để đăng ký một cụm Atlas MongoDB miễn phí tại đây.free MongoDB Atlas cluster here.

Sau khi tạo cụm của bạn, bạn nên thay thế chuỗi kết nối ở trên bằng chuỗi kết nối của bạn bao gồm tên người dùng và mật khẩu của bạn.

Chuỗi kết nối mà bạn sao chép từ bảng điều khiển Atlas MongoDB sẽ tham chiếu cơ sở dữ liệu myFirstDatabase. Thay đổi điều đó thành bất cứ điều gì bạn muốn gọi cơ sở dữ liệu của bạn.myFirstDatabase database. Change that to whatever you would like to call your database.

Tạo một lược đồ và mô hình

Trước khi chúng tôi làm bất cứ điều gì với kết nối của mình, chúng tôi sẽ cần tạo một lược đồ và mô hình.

Lý tưởng nhất, bạn sẽ tạo một tệp lược đồ/mô hình cho mỗi lược đồ cần thiết. Vì vậy, chúng tôi sẽ tạo một thư mục/cấu trúc tệp mới: model/Blog.js.model/Blog.js.

Chèn dữ liệu // Phương pháp 1

Bây giờ chúng tôi đã thiết lập mô hình và lược đồ đầu tiên của chúng tôi, chúng tôi có thể bắt đầu chèn dữ liệu vào cơ sở dữ liệu của chúng tôi.

Quay trở lại trong tệp index.js, hãy để chèn một bài viết blog mới.index.js file, let’s insert a new blog article.

Trước tiên chúng ta cần nhập mô hình Blog mà chúng ta đã tạo. Tiếp theo, chúng tôi tạo một đối tượng blog mới và sau đó sử dụng phương thức

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 để chèn nó vào cơ sở dữ liệu MongoDB của chúng tôi.Blog model that we created. Next, we create a new blog object and then use the
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 method to insert it into our MongoDB database.

Hãy để thêm một chút sau đó để ghi lại những gì hiện đang có trong cơ sở dữ liệu. Chúng tôi sẽ sử dụng phương pháp

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
3 cho việc này.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
3 method for this.

Bạn sẽ thấy tài liệu được chèn đăng nhập vào thiết bị đầu cuối của bạn.

Bởi vì chúng tôi đang sử dụng

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
4 trong dự án này, mỗi khi bạn lưu tệp, mã sẽ chạy lại. Nếu bạn muốn chèn một loạt các bài báo, chỉ cần tiếp tục tiết kiệm. 😄
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
4 in this project, every time you save a file, the code will run again. If you want to insert a bunch of articles, just keep saving. 😄

Chèn dữ liệu // Phương pháp 2

Trong ví dụ trước, chúng tôi đã sử dụng phương pháp Mongoose

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 để chèn tài liệu vào cơ sở dữ liệu của chúng tôi. Điều này đòi hỏi hai hành động: khởi tạo đối tượng, và sau đó lưu nó.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 Mongoose method to insert the document into our database. This requires two actions: instantiating the object, and then saving it.

Ngoài ra, chúng ta có thể thực hiện điều này trong một hành động bằng phương pháp Mongoose

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
6.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
6 method.

Phương pháp này tốt hơn nhiều! Chúng tôi không chỉ có thể chèn tài liệu của mình, mà chúng tôi còn được trả lại tài liệu cùng với

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
7 của nó khi chúng tôi đăng nhập nó.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
7 when we console log it.

Cập nhật dữ liệu

Mongoose làm cho việc cập nhật dữ liệu cũng rất thuận tiện. Mở rộng trên ví dụ trước, hãy để thay đổi

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
8 của bài viết của chúng tôi.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
8 of our article.

Chúng tôi có thể chỉnh sửa trực tiếp đối tượng cục bộ và sau đó sử dụng phương thức

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 để viết bản cập nhật trở lại cơ sở dữ liệu. Tôi không nghĩ rằng nó có thể trở nên dễ dàng hơn thế!
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
2 method to write the update back to the database. I don’t think it can get much easier than that!

Tìm dữ liệu

Hãy để đảm bảo rằng chúng tôi đang cập nhật tài liệu chính xác. Chúng tôi sẽ sử dụng một phương pháp Mongoose đặc biệt, Blog0, để lấy tài liệu của chúng tôi bằng ObjectID.Blog0, to get our document by its ObjectId.

Lưu ý rằng chúng tôi sử dụng chức năng Mongoose Blog1. Đây là tùy chọn về mặt kỹ thuật và trả lại một lời hứa. Theo kinh nghiệm của tôi, tốt hơn là sử dụng chức năng này vì nó sẽ ngăn chặn một số vấn đề gãi đầu. Nếu bạn muốn đọc thêm về nó, hãy xem ghi chú này trong các tài liệu Mongoose về những lời hứa.Blog1 Mongoose function. This is technically optional and returns a promise. In my experience, it’s better to use this function since it will prevent some head-scratching issues. If you want to read more about it, check out this note in the Mongoose docs about promises.

Các trường tài liệu chiếu

Giống như với trình điều khiển Tiêu chuẩn MongoDB Node.js, chúng ta chỉ có thể chiếu các trường mà chúng ta cần. Hãy để chỉ có được các trường

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
8, Blog3 và Blog4.
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
8, Blog3, and Blog4 fields.

Tham số thứ hai có thể là loại Blog5 để chỉ định các trường nào chúng tôi muốn chiếu. Trong trường hợp này, chúng tôi đã sử dụng Blog6.Blog5 to specify which fields we would like to project. In this case, we used a Blog6.

Xóa dữ liệu

Giống như trong trình điều khiển Tiêu chuẩn MongoDB Node.js, chúng tôi có các phương thức Blog7 và Blog8.Blog7 and Blog8 methods.

Thẩm định

Lưu ý rằng các tài liệu chúng tôi đã chèn cho đến nay vẫn chưa chứa Blog9, ngày hoặc blogs0. Cho đến nay, chúng tôi đã xác định cấu trúc của tài liệu của chúng tôi sẽ trông như thế nào, nhưng chúng tôi chưa xác định các trường nào thực sự được yêu cầu. Tại thời điểm này, bất kỳ lĩnh vực nào cũng có thể được bỏ qua.Blog9, dates, or blogs0. So far, we have defined what the structure of our document should look like, but we have not defined which fields are actually required. At this point any field can be omitted.

Hãy để đặt một số trường bắt buộc trong lược đồ blogs1 của chúng tôi.blogs1 schema.

Khi bao gồm xác thực trên một trường, chúng tôi truyền một đối tượng là giá trị của nó.

blogs2 giống như blogs3. is the same as blogs3.

Có một số phương pháp xác nhận có thể được sử dụng.

Chúng tôi có thể đặt blogs4 thành đúng trên bất kỳ trường nào chúng tôi muốn được yêu cầu.blogs4 to true on any fields we would like to be required.

Đối với Blog3, chúng tôi muốn chuỗi luôn ở chữ thường. Đối với điều này, chúng ta có thể đặt blogs6 thành đúng. Điều này sẽ đưa đầu vào sên và chuyển đổi nó thành chữ thường trước khi lưu tài liệu vào cơ sở dữ liệu.Blog3, we want the string to always be in lowercase. For this, we can set blogs6 to true. This will take the slug input and convert it to lowercase before saving the document to the database.

Đối với ngày blogs7 của chúng tôi, chúng tôi có thể đặt mua mặc định bằng hàm mũi tên. Chúng tôi cũng muốn ngày này không thể thay đổi sau này. Chúng ta có thể làm điều đó bằng cách đặt blogs8 thành true.blogs7 date, we can set the default buy using an arrow function. We also want this date to be impossible to change later. We can do that by setting blogs8 to true.

Trình xác nhận chỉ chạy trên các phương thức tạo hoặc lưu.

Các phương pháp hữu ích khác

Mongoose sử dụng nhiều phương pháp MongoDB tiêu chuẩn cộng với giới thiệu nhiều phương pháp trợ giúp bổ sung được trừu tượng hóa từ các phương pháp MongoDB thông thường. Tiếp theo, chúng tôi sẽ đi qua chỉ một vài trong số họ.

Phương thức blogs9 trả về package.json0 hoặc ObjectID của tài liệu phù hợp với truy vấn được cung cấp.blogs9 method returns either package.json0 or the ObjectId of a document that matches the provided query.

Mongoose cũng có phong cách truy vấn riêng. Phương pháp package.json1 cho phép chúng tôi chuỗi và xây dựng các truy vấn.package.json1 method allows us to chain and build queries.

Một trong những phương pháp này hoạt động. Sử dụng bất cứ điều gì có vẻ tự nhiên hơn đối với bạn.

Bạn cũng có thể chuỗi nhiều phương thức package.json1 để bao gồm cả truy vấn phức tạp nhất.package.json1 methods to include even the most complicated query.

Để bao gồm phép chiếu khi sử dụng phương thức package.json1, hãy chuỗi phương thức package.json4 sau truy vấn của bạn.package.json1 method, chain the package.json4 method after your query.

Nhiều lược đồ

Điều quan trọng là phải hiểu các lựa chọn của bạn khi mô hình hóa dữ liệu.

Nếu bạn đến từ một nền tảng cơ sở dữ liệu quan hệ, bạn sẽ được sử dụng để có các bảng riêng cho tất cả các dữ liệu liên quan của bạn.

Nói chung, trong MongoDB, dữ liệu được truy cập cùng nhau nên được lưu trữ cùng nhau.

Bạn nên lập kế hoạch điều này trước thời hạn nếu có thể. Dữ liệu tổ trong cùng một lược đồ khi nó có ý nghĩa.

Nếu bạn có nhu cầu về các lược đồ riêng biệt, Mongoose làm cho nó trở nên dễ dàng.

Hãy để tạo ra một lược đồ khác để chúng ta có thể thấy nhiều lược đồ có thể được sử dụng cùng nhau như thế nào.

Chúng tôi sẽ tạo một tệp mới, package.json5, trong thư mục mô hình.package.json5, in the model folder.

Đối với package.json6, chúng tôi đang sử dụng một thuộc tính mới, package.json7, để yêu cầu độ dài ký tự tối thiểu cho chuỗi này.package.json6, we are using a new property, package.json7, to require a minimum character length for this string.

Bây giờ chúng tôi sẽ tham khảo mô hình người dùng mới này trong lược đồ blog của chúng tôi cho Blog9 và package.json9.Blog9 and package.json9.

Ở đây, chúng tôi đặt Blog9 và package.json9 thành type2 và thêm type3 hoặc tham chiếu vào mô hình người dùng.Blog9 and package.json9 to type2 and added a type3, or reference, to the user model.

Điều này sẽ cho phép chúng tôi tham gia vào dữ liệu của chúng tôi một chút sau đó.

Và don không quên phá hủy type4 từ type5 ở đầu tệp.type4 from type5 at the top of the file.

Cuối cùng, hãy để cập nhật tệp index.js. Chúng tôi sẽ cần nhập mô hình người dùng mới của mình, tạo người dùng mới và tạo một bài viết mới với người dùng mới ____ ____17.index.js file. We’ll need to import our new user model, create a new user, and create a new article with the new user’s

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
7.

Lưu ý rằng có một bộ sưu tập type8 cùng với bộ sưu tập blogs trong cơ sở dữ liệu MongoDB.type8 collection along with the blogs collection in the MongoDB database.

Bây giờ bạn chỉ thấy người dùng

//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
7 trong trường tác giả. Vì vậy, làm thế nào để chúng ta có được tất cả các thông tin cho tác giả cùng với bài viết?
//Import the mongoose module
var mongoose = require('mongoose');

//Set up default mongoose connection
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});

//Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
7 in the author field. So, how do we get all of the info for the author along with the article?

Chúng ta có thể sử dụng phương pháp await1 Mongoose.await1 Mongoose method.

Bây giờ dữ liệu cho Blog9 được điền, hoặc đã tham gia, vào dữ liệu await3. Mongoose thực sự sử dụng phương pháp MongoDB await4 đằng sau hậu trường.Blog9 is populated, or “joined,” into the await3 data. Mongoose actually uses the MongoDB await4 method behind the scenes.

Phần mềm trung gian

Trong Mongoose, phần mềm trung gian là các chức năng chạy trước và/hoặc trong quá trình thực hiện các hàm không đồng bộ ở cấp độ lược đồ.

Đây là một ví dụ. Hãy để cập nhật ngày await5 mỗi khi một bài viết được lưu hoặc cập nhật. Chúng tôi sẽ thêm điều này vào mô hình blogs1 của chúng tôi.await5 date every time an article is saved or updated. We’ll add this to our blogs1 model.

Sau đó, trong tệp index.js, chúng tôi sẽ tìm thấy một bài viết, cập nhật tiêu đề và sau đó lưu nó.index.js file, we’ll find an article, update the title, and then save it.

Lưu ý rằng bây giờ chúng tôi có một ngày await5!await5 date!

Bên cạnh await9, còn có chức năng phần mềm trung gian index.js0.await9, there is also a index.js0 mongoose middleware function.

Bước tiếp theo

Tôi nghĩ rằng ví dụ của chúng tôi ở đây có thể sử dụng một lược đồ khác cho blogs0. Hãy thử tạo lược đồ đó và kiểm tra nó bằng cách thêm một vài người dùng và nhận xét.blogs0. Try creating that schema and testing it by adding a few users and comments.

Có nhiều phương pháp trợ giúp Mongoose tuyệt vời khác không được đề cập ở đây. Hãy chắc chắn kiểm tra các tài liệu chính thức cho các tài liệu tham khảo và nhiều ví dụ hơn.official documentation for references and more examples.

Sự kết luận

Tôi nghĩ thật tuyệt vời khi các nhà phát triển có nhiều lựa chọn để kết nối và thao tác dữ liệu trong MongoDB. Cho dù bạn thích Mongoose hay Trình điều khiển MongoDB tiêu chuẩn, cuối cùng, đó là tất cả về dữ liệu và những gì tốt nhất cho ứng dụng và trường hợp sử dụng của bạn.

Tôi có thể thấy lý do tại sao Mongoose hấp dẫn nhiều nhà phát triển và tôi nghĩ rằng tôi sẽ sử dụng nó nhiều hơn trong tương lai.

Tôi có cần sử dụng Mongoose với MongoDB không?

Mongoose là lớp mô hình tài liệu đối tượng (ODM) nằm trên đầu trình điều khiển MongoDB của nút. Nếu bạn đến từ SQL, nó tương tự như ORM cho cơ sở dữ liệu quan hệ. Mặc dù không bắt buộc phải sử dụng Mongoose với Mongo, nhưng đây là bốn lý do tại sao sử dụng Mongoose với MongoDB nói chung là một ý tưởng tốt.it's not required to use Mongoose with the Mongo, here are four reasons why using Mongoose with MongoDB is generally a good idea.

Làm thế nào để chúng tôi kết nối Mongoose với cơ sở dữ liệu MongoDB của chúng tôi?

Bạn có thể kết nối với MongoDB với phương thức Mongoose.connect ().Mongoose.Connect ('MongoDB: // Localhost: 27017/MyApp');Đây là mức tối thiểu cần thiết để kết nối cơ sở dữ liệu MyApp chạy cục bộ trên cổng mặc định (27017).Nếu kết nối không thành công trên máy của bạn, hãy thử sử dụng 127.0.0.1 thay vì localhost.mongoose.connect() method. mongoose.connect('mongodb://localhost:27017/myapp'); This is the minimum needed to connect the myapp database running locally on the default port (27017). If connecting fails on your machine, try using 127.0.0.1 instead of localhost .

Tốt hơn là sử dụng Mongoose hoặc MongoDB?

Mặt khác, việc học Mongoose có thể mất một thời gian và có một số hạn chế trong các lược đồ xử lý khá phức tạp.Tuy nhiên, nếu lược đồ bộ sưu tập của bạn là không thể đoán trước, hoặc bạn muốn có một vỏ Mongo như trải nghiệm bên trong Node.js, thì hãy tiếp tục và sử dụng trình điều khiển MongoDB.Đó là đơn giản nhất để chọn.if your collection schema is unpredictable, or you want a Mongo-shell like experience inside Node. js, then go ahead and use the mongodb driver. It is the simplest to pick up.

Mongoose có phải là một phần của MongoDB không?

Mongoose là thư viện mô hình dữ liệu đối tượng dựa trên Node.js (ODM) cho MongoDB.Nó giống như một bản đồ quan hệ đối tượng (ORM) như SQLalchemy cho cơ sở dữ liệu SQL truyền thống. js-based Object Data Modeling (ODM) library for MongoDB. It is akin to an Object Relational Mapper (ORM) such as SQLAlchemy for traditional SQL databases.