Hướng dẫn về Node.js MongoDB với các ví dụ

Hầu hết tất cả các ứng dụng web hiện đại đều có một số loại hệ thống lưu trữ dữ liệu ở phần phụ trợ. Ví dụ: nếu bạn lấy trường hợp của một ứng dụng mua sắm trên web, dữ liệu như giá của một mặt hàng sẽ được lưu trữ trong cơ sở dữ liệu.

Khung công tác Node js có thể hoạt động với cơ sở dữ liệu có cả cơ sở dữ liệu quan hệ (chẳng hạn như Oracle và MS SQL Server) và cơ sở dữ liệu không quan hệ (chẳng hạn như MongoDB). Trong hướng dẫn này, chúng ta sẽ xem cách chúng ta có thể sử dụng cơ sở dữ liệu từ bên trong các ứng dụng Node js.

Trong hướng dẫn này, bạn sẽ học-

  • Cơ sở dữ liệu Node.js và NoSQL
  • Sử dụng MongoDB và Node.js
  • Cách tạo ứng dụng node express với MongoDB để lưu trữ và phân phát nội dung

Cơ sở dữ liệu Node.js và NoSQL

Trong những năm qua, cơ sở dữ liệu NoSQL như MongoDB và MySQL đã trở nên khá phổ biến như là cơ sở dữ liệu để lưu trữ dữ liệu. Khả năng của các cơ sở dữ liệu này để lưu trữ bất kỳ loại nội dung nào và đặc biệt là ở bất kỳ loại định dạng nào là điều làm cho các cơ sở dữ liệu này trở nên nổi tiếng.

Node.js có khả năng làm việc với cả MySQL và MongoDB dưới dạng cơ sở dữ liệu. Để sử dụng một trong hai cơ sở dữ liệu này, bạn cần tải xuống và sử dụng các mô-đun cần thiết bằng trình quản lý gói Node.

Đối với MySQL, mô-đun yêu cầu được gọi là "mysql" và để sử dụng MongoDB, mô-đun bắt buộc phải được cài đặt là "Mongoose."

Với các mô-đun này, bạn có thể thực hiện các thao tác sau trong Node.js

  1. Quản lý tổng hợp kết nối - Đây là nơi bạn có thể chỉ định số lượng kết nối cơ sở dữ liệu MySQL sẽ được duy trì và lưu bởi Node.js.
  2. Tạo và đóng kết nối với cơ sở dữ liệu. Trong cả hai trường hợp, bạn có thể cung cấp một hàm gọi lại có thể được gọi bất cứ khi nào các phương thức kết nối "tạo" và "đóng" được thực thi.
  3. Các truy vấn có thể được thực hiện để lấy dữ liệu từ các cơ sở dữ liệu tương ứng để lấy dữ liệu.
  4. Thao tác dữ liệu, chẳng hạn như chèn dữ liệu, xóa và cập nhật dữ liệu cũng có thể đạt được với các mô-đun này.

Đối với các chủ đề còn lại, chúng ta sẽ xem xét cách chúng ta có thể làm việc với cơ sở dữ liệu MongoDB trong Node.js.

Sử dụng MongoDB và Node.js

Như đã thảo luận trong chủ đề trước đó, MongoDB là một trong những cơ sở dữ liệu phổ biến nhất được sử dụng cùng với Node.js.

Trong chương này, chúng ta sẽ thấy

Cách chúng ta có thể thiết lập kết nối với cơ sở dữ liệu MongoDB

Làm thế nào chúng ta có thể thực hiện các hoạt động bình thường của việc đọc dữ liệu từ cơ sở dữ liệu cũng như chèn, xóa và cập nhật các bản ghi trong cơ sở dữ liệu MongoDB.

Với mục đích của chương này, hãy giả sử rằng chúng ta có sẵn dữ liệu MongoDB bên dưới.

Tên cơ sở dữ liệu: EmployeeDB

Tên bộ sưu tập: Nhân viên

Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
  1. Cài đặt Mô-đun NPM

Bạn cần có trình điều khiển để truy cập Mongo từ bên trong ứng dụng Node. Có một số trình điều khiển Mongo có sẵn, nhưng MongoDB là một trong những trình điều khiển phổ biến nhất. Để cài đặt mô-đun MongoDB, hãy chạy lệnh dưới đây

npm cài đặt mongodb

  1. Tạo và đóng kết nối với cơ sở dữ liệu MongoDB. Đoạn mã dưới đây cho biết cách tạo và đóng kết nối với cơ sở dữ liệu MongoDB.

Giải thích mã:

  1. Bước đầu tiên là bao gồm mô-đun mongoose, được thực hiện thông qua hàm request. Khi mô-đun này đã có sẵn, chúng ta có thể sử dụng các chức năng cần thiết có sẵn trong mô-đun này để tạo kết nối với cơ sở dữ liệu.
  2. Tiếp theo, chúng tôi chỉ định chuỗi kết nối của chúng tôi với cơ sở dữ liệu. Trong chuỗi kết nối, có 3 giá trị khóa được chuyển.
  • Đầu tiên là 'mongodb' chỉ định rằng chúng tôi đang kết nối với cơ sở dữ liệu mongoDB.
  • Tiếp theo là 'localhost' có nghĩa là chúng ta đang kết nối với cơ sở dữ liệu trên máy cục bộ.
  • Tiếp theo là 'EmployeeDB' là tên của cơ sở dữ liệu được xác định trong cơ sở dữ liệu MongoDB của chúng tôi.
  1. Bước tiếp theo là thực sự kết nối với cơ sở dữ liệu của chúng tôi. Hàm kết nối có trong URL của chúng tôi và có cơ sở để chỉ định một hàm gọi lại. Nó sẽ được gọi khi kết nối được mở vào cơ sở dữ liệu. Điều này cho chúng tôi cơ hội để biết kết nối cơ sở dữ liệu có thành công hay không.
  2. Trong hàm, chúng tôi đang viết chuỗi "Đã thiết lập kết nối" vào bảng điều khiển để cho biết rằng một kết nối đã được tạo thành công.
  3. Cuối cùng, chúng tôi đang đóng kết nối bằng câu lệnh db.close.

Nếu đoạn mã trên được thực thi đúng cách, chuỗi "Connected" sẽ được ghi vào bảng điều khiển như hình dưới đây.

  1. Truy vấn dữ liệu trong cơ sở dữ liệu MongoDB - Sử dụng trình điều khiển MongoDB, chúng ta cũng có thể tìm nạp dữ liệu từ cơ sở dữ liệu MongoDB.

    Phần bên dưới sẽ chỉ ra cách chúng tôi có thể sử dụng trình điều khiển để tìm nạp tất cả các tài liệu từ bộ sưu tập Nhân viên của chúng tôi trong cơ sở dữ liệu EmployeeDB của chúng tôi. Đây là bộ sưu tập trong cơ sở dữ liệu MongoDB của chúng tôi, chứa tất cả các tài liệu liên quan đến nhân viên. Mỗi tài liệu có một id đối tượng, tên Nhân viên và id nhân viên để xác định các giá trị của tài liệu.

var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();cursor.each(function(err, doc) {console.log(doc);});}); 

Giải thích mã:

  1. Trong bước đầu tiên, chúng ta đang tạo một con trỏ (Con trỏ là một con trỏ được sử dụng để trỏ đến các bản ghi khác nhau được tìm nạp từ cơ sở dữ liệu. Sau đó, con trỏ được sử dụng để lặp qua các bản ghi khác nhau trong cơ sở dữ liệu. Ở đây chúng ta đang định nghĩa một tên biến được gọi là con trỏ sẽ được sử dụng để lưu trữ con trỏ tới các bản ghi được tìm nạp từ cơ sở dữ liệu.) trỏ đến các bản ghi được tìm nạp từ bộ sưu tập MongoDb. Chúng tôi cũng có cơ sở chỉ định tập hợp 'Nhân viên' để lấy các bản ghi. Hàm find () được sử dụng để chỉ định rằng chúng ta muốn truy xuất tất cả các tài liệu từ bộ sưu tập MongoDB.

  2. Bây giờ chúng ta đang lặp lại qua con trỏ của chúng ta và đối với mỗi tài liệu trong con trỏ, chúng ta sẽ thực thi một hàm.

  3. Chức năng của chúng tôi chỉ đơn giản là in nội dung của mỗi tài liệu vào bảng điều khiển.

Lưu ý: - Cũng có thể lấy một bản ghi cụ thể từ cơ sở dữ liệu. Điều này có thể được thực hiện bằng cách chỉ định điều kiện tìm kiếm trong hàm find (). Ví dụ: giả sử nếu bạn chỉ muốn tìm nạp bản ghi có tên nhân viên là Guru99, thì câu lệnh này có thể được viết như sau

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Nếu mã trên được thực thi thành công, kết quả sau sẽ được hiển thị trong bảng điều khiển của bạn.

Đầu ra:

Từ đầu ra,

  • Bạn sẽ có thể thấy rõ ràng rằng tất cả các tài liệu từ bộ sưu tập đều được truy xuất. Điều này có thể thực hiện được bằng cách sử dụng phương thức find () của kết nối mongoDB (db) và lặp qua tất cả các tài liệu bằng con trỏ.
  1. Chèn tài liệu vào bộ sưu tập - Có thể chèn tài liệu vào bộ sưu tập bằng phương thức insertOne do thư viện MongoDB cung cấp. Đoạn mã dưới đây cho thấy cách chúng tôi có thể chèn tài liệu vào bộ sưu tập mongoDB.

var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});

Giải thích mã:

  1. Ở đây chúng tôi đang sử dụng phương thức insertOne từ thư viện MongoDB để chèn tài liệu vào bộ sưu tập Employee.
  2. Chúng tôi đang xác định chi tiết tài liệu về những gì cần được chèn vào bộ sưu tập Nhân viên.

Nếu bây giờ bạn kiểm tra nội dung của cơ sở dữ liệu MongoDB của mình, bạn sẽ tìm thấy bản ghi có Employeeid của 4 và EmployeeName của "Nhân viên mới" được chèn vào bộ sưu tập Nhân viên.

Lưu ý: Bảng điều khiển sẽ không hiển thị bất kỳ đầu ra nào vì bản ghi đang được chèn vào cơ sở dữ liệu và không có đầu ra nào có thể được hiển thị ở đây.

Để kiểm tra xem dữ liệu đã được chèn đúng cách vào cơ sở dữ liệu chưa, bạn cần thực hiện các lệnh sau trong MongoDB

  1. Sử dụng EmployeeDB
  2. db.Eprisee.find ({Employeeid: 4})

Câu lệnh đầu tiên đảm bảo rằng bạn được kết nối với cơ sở dữ liệu EmployeeDb. Câu lệnh thứ hai tìm kiếm bản ghi có id nhân viên là 4.

  1. Cập nhật tài liệu trong bộ sưu tập - Có thể cập nhật tài liệu trong bộ sưu tập bằng phương thức updateOne do thư viện MongoDB cung cấp. Đoạn mã dưới đây cho biết cách cập nhật tài liệu trong bộ sưu tập mongoDB.

var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').updateOne({"EmployeeName": "NewEmployee"}, {$set: {"EmployeeName": "Mohan"}});});

Giải thích mã:

  1. Ở đây chúng tôi đang sử dụng phương thức "updateOne" từ thư viện MongoDB, được sử dụng để cập nhật tài liệu trong bộ sưu tập mongoDB.
  2. Chúng tôi đang chỉ định tiêu chí tìm kiếm của tài liệu nào cần được cập nhật. Trong trường hợp của chúng tôi, chúng tôi muốn tìm tài liệu có Tên nhân viên là "Nhân viên mới".
  3. Sau đó, chúng tôi muốn đặt giá trị của Tên nhân viên của tài liệu từ "Người mới làm việc" thành "Mohan".

Nếu bây giờ bạn kiểm tra nội dung của cơ sở dữ liệu MongoDB của mình, bạn sẽ tìm thấy bản ghi có Employeeid là 4 và EmployeeName của "Mohan" được cập nhật trong bộ sưu tập Employee.

Để kiểm tra xem dữ liệu đã được cập nhật đúng cách trong cơ sở dữ liệu chưa, bạn cần thực hiện các lệnh sau trong MongoDB

  1. Sử dụng EmployeeDB
  2. db.Eprisee.find ({Employeeid: 4})

Câu lệnh đầu tiên đảm bảo rằng bạn được kết nối với cơ sở dữ liệu EmployeeDb. Câu lệnh thứ hai tìm kiếm bản ghi có id nhân viên là 4.

  1. Xóa tài liệu trong bộ sưu tập - Có thể xóa tài liệu trong bộ sưu tập bằng phương pháp "deleteOne" do thư viện MongoDB cung cấp. Đoạn mã dưới đây cho biết cách xóa tài liệu trong bộ sưu tập mongoDB.

var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});

Giải thích mã:

  1. Ở đây chúng tôi đang sử dụng phương thức "deleteOne" từ thư viện MongoDB, được sử dụng để xóa tài liệu trong bộ sưu tập mongoDB.
  2. Chúng tôi đang chỉ định tiêu chí tìm kiếm của tài liệu nào cần được xóa. Trong trường hợp của chúng tôi, chúng tôi muốn tìm tài liệu có Tên nhân viên là "Mohan" và xóa tài liệu này.

Nếu bây giờ bạn kiểm tra nội dung của cơ sở dữ liệu MongoDB, bạn sẽ thấy bản ghi có Employeeid là 4 và EmployeeName của "Mohan" đã bị xóa khỏi bộ sưu tập Employee.

Để kiểm tra xem dữ liệu đã được cập nhật đúng cách trong cơ sở dữ liệu chưa, bạn cần thực hiện các lệnh sau trong MongoDB

  1. Sử dụng EmployeeDB
  2. db.Eprisee.find ()

Câu lệnh đầu tiên đảm bảo rằng bạn được kết nối với cơ sở dữ liệu EmployeeDb. Câu lệnh thứ hai tìm kiếm và hiển thị tất cả các bản ghi trong bộ sưu tập nhân viên. Tại đây bạn có thể xem bản ghi đã bị xóa hay chưa.

Cách tạo ứng dụng node express với MongoDB để lưu trữ và phân phát nội dung

Việc xây dựng một ứng dụng kết hợp cả sử dụng express và MongoDB là điều khá phổ biến hiện nay.

Khi làm việc với các ứng dụng dựa trên web JavaScript, thông thường ở đây người ta sẽ sử dụng thuật ngữ ngăn xếp MEAN.

  • Thuật ngữ ngăn xếp MEAN đề cập đến một tập hợp các công nghệ dựa trên JavaScript được sử dụng để phát triển các ứng dụng web.
  • MEAN là từ viết tắt của MongoDB, ExpressJS, AngularJS và Node.js.

Do đó, luôn luôn tốt để hiểu cách Node.js và MongoDB làm việc cùng nhau để cung cấp các ứng dụng tương tác với cơ sở dữ liệu phụ trợ.

Hãy xem một ví dụ đơn giản về cách chúng ta có thể sử dụng "express" và "MongoDB" cùng nhau. Ví dụ của chúng tôi sẽ sử dụng cùng một tập hợp Nhân viên trong cơ sở dữ liệu MongoDB EmployeeDB.

Bây giờ chúng tôi sẽ kết hợp Express để hiển thị dữ liệu trên trang web của chúng tôi khi người dùng yêu cầu. Khi ứng dụng của chúng tôi chạy trên Node.js, người ta có thể cần phải duyệt đến URL http: // localhost: 3000 / Employeeid .

Khi trang được khởi chạy, tất cả id nhân viên trong bộ sưu tập Nhân viên sẽ được hiển thị. Vì vậy, hãy xem đoạn mã trong các phần sẽ cho phép chúng ta đạt được điều này.

Bước 1) Xác định tất cả các thư viện cần được sử dụng trong ứng dụng của chúng tôi, trong trường hợp của chúng tôi là cả thư viện MongoDB và express.

Giải thích mã:

  1. Chúng tôi đang xác định thư viện 'express' của chúng tôi, thư viện này sẽ được sử dụng trong ứng dụng của chúng tôi.
  2. Chúng tôi đang xác định thư viện 'express' của mình, thư viện này sẽ được sử dụng trong ứng dụng của chúng tôi để kết nối với cơ sở dữ liệu MongoDB của chúng tôi.
  3. Ở đây chúng tôi đang xác định URL của cơ sở dữ liệu của chúng tôi để kết nối.
  4. Cuối cùng, chúng tôi đang xác định một chuỗi sẽ được sử dụng để lưu trữ bộ sưu tập id nhân viên của chúng tôi cần được hiển thị trong trình duyệt sau này.

Bước 2) Trong bước này, bây giờ chúng tôi sẽ lấy tất cả các bản ghi trong bộ sưu tập 'Nhân viên' của chúng tôi và làm việc với chúng cho phù hợp.

Giải thích mã:

  1. Chúng tôi đang tạo một tuyến đường đến ứng dụng của chúng tôi có tên là 'Employeeid.' Vì vậy, bất cứ khi nào ai đó duyệt đến http: // localhost: 3000 / Employeeid trong ứng dụng của chúng tôi, đoạn mã được xác định cho tuyến này sẽ được thực thi.
  2. Ở đây, chúng tôi đang nhận tất cả các bản ghi trong bộ sưu tập 'Nhân viên' của mình thông qua lệnh db.collection ('Nhân viên'). Find (). Sau đó, chúng tôi sẽ gán bộ sưu tập này cho một biến được gọi là con trỏ. Sử dụng biến con trỏ này, chúng tôi sẽ có thể duyệt qua tất cả các bản ghi của bộ sưu tập.
  3. Bây giờ chúng tôi đang sử dụng hàm cursor.each () để điều hướng qua tất cả các bản ghi trong bộ sưu tập của chúng tôi. Đối với mỗi bản ghi, chúng tôi sẽ xác định một đoạn mã về những việc cần làm khi mỗi bản ghi được truy cập.
  4. Cuối cùng, chúng ta thấy rằng nếu bản ghi trả về không phải là null, thì chúng ta đang lấy nhân viên thông qua lệnh "item.EFasteeid". Phần còn lại của mã chỉ là xây dựng một mã HTML thích hợp sẽ cho phép kết quả của chúng tôi được hiển thị chính xác trong trình duyệt.

Bước 3) Trong bước này, chúng tôi sẽ gửi đầu ra của chúng tôi đến trang web và làm cho ứng dụng của chúng tôi lắng nghe trên một cổng cụ thể.

Giải thích mã:

  1. Ở đây, chúng tôi đang gửi toàn bộ nội dung đã được xây dựng ở bước trước đó đến trang web của chúng tôi. Tham số 'res' cho phép chúng tôi gửi nội dung đến trang web của chúng tôi dưới dạng phản hồi.
  2. Chúng tôi đang làm cho toàn bộ ứng dụng Node.js của chúng tôi lắng nghe trên cổng 3000.

Đầu ra:

Từ đầu ra,

  • Nó cho thấy rõ ràng rằng tất cả các nhân viên trong bộ sưu tập Nhân viên đã được truy xuất. Điều này là do chúng tôi sử dụng trình điều khiển MongoDB để kết nối với cơ sở dữ liệu và truy xuất tất cả các bản ghi Nhân viên và sau đó sử dụng "express" để hiển thị các bản ghi.

Đây là mã để bạn tham khảo

var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res){MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();//noinspection JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "
";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});

Lưu ý: cursor.each có thể không được dùng nữa dựa trên phiên bản trình điều khiển MongoDB của bạn. Bạn có thể thêm // noinspection JSDeprecatedSymbols trước cursor.each để giải quyết vấn đề. Ngoài ra, bạn có thể sử dụng forEach. Dưới đây là mã mẫu sử dụng forEach

var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res) {MongoClient.connect(url, function(err, db) {var collection = db.collection('Employee');var cursor = collection.find({});str = "";cursor.forEach(function(item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "
";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});

Tóm lược

  • Node.js được sử dụng cùng với cơ sở dữ liệu NoSQL để xây dựng rất nhiều ứng dụng web ngày nay. Một số cơ sở dữ liệu phổ biến được sử dụng là MySQL và MongoDB.
  • Một trong những mô-đun phổ biến được sử dụng để làm việc với cơ sở dữ liệu MongoDB là một mô-đun có tên là 'MongoDB.' Mô-đun này được cài đặt thông qua trình quản lý gói Node.
  • Với mô-đun MongoDB, có thể truy vấn các bản ghi trong bộ sưu tập và thực hiện các thao tác cập nhật, xóa và chèn thông thường.
  • Cuối cùng, một trong những phương pháp hiện đại là sử dụng express framework cùng với MongoDB để cung cấp các ứng dụng hiện đại. Khung công tác Express có thể sử dụng dữ liệu do trình điều khiển MongoDB trả về và hiển thị dữ liệu cho người dùng trong trang web tương ứng.

thú vị bài viết...