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
2 để chèn nó vào cơ sở dữ liệu MongoDB 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:']];
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
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:']];
//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
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:']];
//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
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:']];
//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
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:']];
//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
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:']];
//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
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:']];
//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
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:']];
//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, Blog
0, để lấy tài liệu của chúng tôi bằng ObjectID.Blog
0, to get our document by its ObjectId.
Lưu ý rằng chúng tôi sử dụng chức năng Mongoose Blog
1. Đâ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.Blog
1 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
8, //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:']];
Blog
3 và Blog
4.
//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, Blog
3, and Blog
4 fields.Tham số thứ hai có thể là loại Blog
5 để 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 Blog
6.Blog
5 to specify which fields we would like to project. In this case, we used a Blog
6.
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 Blog
7 và Blog
8.Blog
7 and Blog
8 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 Blog
9, ngày hoặc blogs
0. 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.Blog
9, dates, or blogs
0. 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 đồ blogs
1 của chúng tôi.blogs
1 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ó.
blogs
2 giống như blogs
3. is the same as blogs
3.
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 blogs
4 thành đúng trên bất kỳ trường nào chúng tôi muốn được yêu cầu.blogs
4 to true on any fields we would like
to be required.
Đối với Blog
3, 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 blogs
6 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.Blog
3, we want the string to always be in lowercase. For this, we can set blogs
6 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 blogs
7 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 blogs
8 thành true.blogs
7 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 blogs
8
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 blogs
9 trả về package.json
0 hoặc ObjectID của tài liệu phù hợp với truy vấn được cung cấp.blogs
9 method returns either package.json
0 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.json
1 cho phép chúng tôi chuỗi và xây dựng các truy vấn.package.json
1 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.json
1 để bao gồm cả truy vấn phức tạp nhất.package.json
1 methods to include even the most complicated query.
Để bao gồm phép chiếu khi sử dụng phương thức package.json
1, hãy chuỗi phương thức package.json
4 sau truy vấn của bạn.package.json
1 method, chain the
package.json
4 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.json
5, trong thư mục mô hình.package.json
5, in the model folder.
Đối với package.json
6, chúng tôi đang sử dụng một thuộc tính mới, package.json
7, để yêu cầu độ dài ký tự tối thiểu cho chuỗi này.package.json
6, we are using a new property, package.json
7, 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 Blog
9 và package.json
9.Blog
9 and package.json
9.
Ở đây, chúng tôi đặt Blog
9 và package.json
9 thành type
2 và thêm type
3 hoặc tham chiếu vào mô hình người dùng.Blog
9 and package.json
9 to type
2 and added a
type
3, 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 type
4 từ type
5 ở đầu tệp.type
4 from type
5 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 type
8 cùng với bộ sưu tập blogs
trong cơ sở dữ liệu MongoDB.type
8 collection along with the blogs
collection in the MongoDB database.
Bây giờ bạn chỉ thấy người dùng
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:']];
//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 await
1 Mongoose.await
1 Mongoose method.
Bây giờ dữ liệu cho Blog
9 được điền, hoặc đã tham gia, vào dữ liệu await
3. Mongoose thực sự sử dụng phương pháp MongoDB await
4 đằng sau hậu trường.Blog
9 is populated, or “joined,” into the await
3 data. Mongoose actually uses the MongoDB
await
4 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 await
5 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 blogs
1 của chúng tôi.await
5 date every time an article is saved or updated. We’ll add this to our blogs
1 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 await
5!await
5 date!
Bên cạnh await
9, còn có chức năng phần mềm trung gian index.js
0.await
9, there is also a index.js
0 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 blogs
0. 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.blogs
0. 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.