Trang chủ » Blog » Hướng dẫn cách để kết nối MongoDB với NodeJS

Hướng dẫn cách để kết nối MongoDB với NodeJS

bởi Admin | 08/01/2024 12:00 | Blog

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở phổ biến, được phát triển bằng ngôn ngữ lập trình C++. Ban đầu, nó được phát triển bởi công ty 10gen và sau đó được đổi tên thành MongoDB Inc. Dưới đây CodeGym Đà Nẵng sẽ hướng dẫn bạn cách để kết nối MongoDB với NodeJS 

Giới thiệu về MongoDB 

Giới thiệu MongoDB là gì

Giới thiệu MongoDB là gì?

 

MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở NoSQL phổ biến, được viết bằng ngôn ngữ lập trình C++. Đây là một cơ sở dữ liệu hướng tài liệu, trong đó dữ liệu được lưu trữ dưới dạng các tài liệu đơn giản gọi là document. Mỗi document là một tập hợp các cặp key-value và được biểu diễn dưới dạng JSON với schema động.

Một trong những đặc điểm nổi bật của MongoDB: 

  • Khả năng linh hoạt trong việc lưu trữ dữ liệu. 
  • Không giống như các hệ quản trị cơ sở dữ liệu quan hệ truyền thống, MongoDB không yêu cầu sự tuân thủ chặt chẽ về cấu trúc dữ liệu. 
  • Bạn có thể lưu trữ các bản ghi với các trường và kiểu dữ liệu khác nhau mà không cần lo lắng về schema trước. 

Điều này cho phép bạn linh hoạt thay đổi cấu trúc dữ liệu mà không cần phải thay đổi cấu trúc của cơ sở dữ liệu.

  • Bạn có thể thực hiện các thao tác truy vấn linh hoạt và phong phú để truy xuất và xử lý dữ liệu
  • Cung cấp các tính năng như replica set để đảm bảo tính sẵn sàng và khả năng mở rộng horizontal để xử lý khối lượng dữ liệu lớn.
Đặc điểm của MongoDB

Đặc điểm của MongoDB

Cách cài đặt NodeJS

Trước khi tiếp tục, hãy chắc chắn rằng bạn đã cài đặt phiên bản NodeJS được hỗ trợ. Trình điều khiển MongoDB NodeJS yêu cầu phiên bản NodeJS 4.x trở lên. Đối với ví dụ này, tôi đã sử dụng NodeJS 10.16.3.

Ngoài ra, nếu bạn muốn sử dụng MongoDB NodeJS Native Driver mà không sử dụng thư viện Mongoose, bạn cũng có thể làm như vậy.

Cách cài đặt trình điều khiển MongoDB NodeJS

Để tương tác với cơ sở dữ liệu MongoDB từ ứng dụng NodeJS, bạn cần cài đặt trình điều khiển MongoDB và NodeJS. Để thực hiện việc này, bạn có thể sử dụng lệnh sau để cài đặt trình điều khiển thông qua npm:
npm install mongodb

Lệnh trên sẽ cài đặt phiên bản mới nhất của trình điều khiển MongoDB NodeJS. Bạn cũng có thể sử dụng lệnh npm list mongodb để kiểm tra phiên bản trình điều khiển đã được cài đặt trên máy tính của bạn.

Hãy lưu ý rằng phiên bản cụ thể của trình điều khiển có thể khác và được cập nhật theo thời gian. Để biết thêm chi tiết về trình điều khiển MongoDB và NodeJS và cách cài đặt, bạn có thể tham khảo tài liệu chính thức của MongoDB.

Hãy tạo một cụm bản đồ MongoDB miễn phí và tải dữ liệu mẫu

Tiếp theo, bạn sẽ cần đến một cơ sở dữ liệu MongoDB. Cơ sở dữ liệu của bạn sẽ được lưu trữ bên trong một cụm. Ở cấp độ cao, một cụm là một tập hợp các nút nơi các bản sao cơ sở dữ liệu của bạn sẽ được lưu trữ.

Cách dễ nhất để bắt đầu với MongoDB là sử dụng Atlas, cơ sở dữ liệu dưới dạng dịch vụ được quản lý hoàn toàn của MongoDB. Đi tới Atlas và tạo một nhóm mới trong lớp miễn phí. Sau khi cấp của bạn được tạo, hãy tải dữ liệu mẫu .

Nếu bạn chưa quen với cách tạo một cụm mới và tải dữ liệu mẫu, hãy xem video hướng dẫn này từ MongoDB Developer Advocate Maxime Beignet .

Nhận được thông tin kết nối của cụm của bạn

Bước cuối cùng là chuẩn bị cho việc kết nối với cụm MongoDB của bạn.

Trên MongoDB Atlas, hãy điều hướng đến cụm của bạn và nhấp vào tab “CONNECT”. Trình hướng dẫn mà kết nối cụm sẽ xuất hiện.

Trong trình hướng dẫn, bạn sẽ được yêu cầu thêm địa chỉ IP hiện tại vào danh sách trắng và tạo một người dùng MongoDB nếu bạn chưa làm điều đó. 

Tiếp theo, trình hướng dẫn sẽ yêu cầu bạn chọn một phương thức kết nối. Chọn “Connect Your Application”. Khi được yêu cầu chọn phiên bản trình điều khiển, chọn “NodeJS” và phiên bản “3.0 trở lên”. Sao chép chuỗi kết nối mà ta được cung cấp.

Cách để kết nối với cơ sở dữ liệu của bạn từ ứng dụng NodeJS

Dưới đây là một ví dụ về tập lệnh NodeJS để kết nối MongoDB với NodeJS và liệt kê các cơ sở dữ liệu trong cụm của bạn. Trước khi chạy tập lệnh này, hãy đảm bảo rằng bạn đã cài đặt trình điều khiển MongoDB NodeJS thông qua npm.

Hướng dẫn cách để kết nối MôngDB với NodeJS (1)

Hướng dẫn cách để kết nối MôngDB với NodeJS 

Hãy nhập MongoClient

Mô-đun MongoDB xuất MongoClient và đó là những gì chúng ta sẽ sử dụng để kết nối với cơ sở dữ liệu MongoDB. Để sử dụng MongoClient, bạn có thể chỉ import nó từ mô-đun ‘mongodb’ như sau:

const { MongoClient } = require(‘mongodb’);

Sau đó, bạn có thể sử dụng thể hiện của MongoClient để kết nối với cụm MongoDB và thực hiện các hoạt động khác như truy cập cơ sở dữ liệu và đóng kết nối.

Tạo nên chức năng chính 

Chúng ta sẽ tạo một hàm không đồng bộ có tên main() để kết nối với cụm MongoDB, thực thi các hàm truy vấn cơ sở dữ liệu và sau đó ngắt kết nối.

Đầu tiên, chúng ta cần khai báo một hằng số để lưu URI kết nối. URI kết nối này là chuỗi kết nối mà bạn đã sao chép từ Atlas ở phần trước. Hãy đảm bảo rằng bạn cập nhật <username> và <password> trong URI kết nối với thông tin đăng nhập cho người dùng bạn đã tạo trước đó. Lưu ý: Tên người dùng và mật khẩu bạn cung cấp trong URI kết nối KHÔNG giống với thông tin đăng nhập của Atlas.

Dưới đây là một ví dụ về hàm main() như yêu cầu:

 const { MongoClient } = require(‘mongodb’);

async function main() {

  // URI kết nối MongoDB Atlas

  const uri = ‘mongodb+srv://<username>:<password>@<cluster-url>’;

  // Tạo một phiên kết nối đến cụm MongoDB

  const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

  try {

    // Kết nối tới cụm MongoDB

    await client.connect();

    console.log(‘Đã kết nối thành công đến cụm MongoDB’);

    // Gọi các hàm truy vấn cơ sở dữ liệu ở đây

    await listDatabases(client);

    // Ngắt kết nối với cụm MongoDB

    await client.close();

    console.log(‘Đã ngắt kết nối với cụm MongoDB’);

  } catch (error) {

    console.error(‘Đã xảy ra lỗi:’, error);

  }

}

  // Liệt kê các cơ sở dữ liệu trong cụm MongoDB

  const databasesList = await client.db().admin().listDatabases();

  console.log(‘Các cơ sở dữ liệu trong cụm MongoDB:’);

  databasesList.databases.forEach(db => {

    console.log(`- ${db.name}`);

  });

}

// Gọi hàm main() để bắt đầu quá trình kết nối và truy vấn cơ sở dữ liệu

main().catch(console.error);

Bây giờ thì chúng ta đã có URL của mình, chúng ta đã có thể tạo một thể hiện của MongoClient.

const { MongoClient } = require(‘mongodb’);

async function main() {

  const uri = ‘mongodb+srv://<username>:<password>@<cluster-url>’;

  // Tạo một thể hiện của MongoClient

  const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

  // Tiếp tục với các bước kết nối và truy vấn cơ sở dữ liệu…

}

main().catch(console.error);

Lưu ý: Khi bạn chạy mã trên, có thể xuất hiện những cảnh báo DeprecationWarnings liên quan đến trình phân tích cú pháp chuỗi URL và công cụ Giám sát và Khám phá Máy chủ. Để xóa những cảnh báo này, bạn có thể sử dụng các tùy chọn { useNewUrlParser: true, useUnifiedTopology: true } khi khởi tạo thể hiện của MongoClient. Ví dụ: new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }). Bạn có thể tham khảo tài liệu API của trình điều khiển NodeJS MongoDB để biết thêm thông tin về các tùy chọn này.

Sau khi chúng ta đã chuẩn bị hàm main() của mình, chúng ta có thể tiến hành kết nối với cụm MongoDB và gọi các hàm truy vấn cơ sở dữ liệu. Đầu tiên, chúng ta cần tạo một thể hiện của MongoClient bằng cách sử dụng URI kết nối đã cung cấp:

const client = new MongoClient(uri);

Tiếp theo, chúng ta sử dụng từ khóa await để chờ kết nối hoàn tất:

await client.connect();

Bây giờ, chúng ta có thể xây dựng một hàm listDatabases() để liệt kê các cơ sở dữ liệu trong cụm:

async function listDatabases(client) {

  const databasesList = await client.db().admin().listDatabases();

  console.log(“Databases:”);

  databasesList.databases.forEach(db => {

    console.log(`- ${db.name}`);

  });

}

Tiếp theo, chúng ta gói các lệnh gọi vào trong một khối try/catch để xử lý các lỗi không mong muốn:

try {

  await client.connect();

  await listDatabases(client);

} catch (e) {

  console.error(e);

}

Cuối cùng, chúng ta đảm bảo rằng chúng ta đóng kết nối trong khối finally:

finally {

  await client.close();

}

Cuối cùng, chúng ta gọi hàm main() và bắt lỗi (nếu có) để hiển thị trên bảng điều khiển:

main().catch(console.error);

Tổng hợp lại, mã hoàn chỉnh sẽ trông như sau:

async function main() {

  const uri = “mongodb+srv://<username>:<password>@<your-cluster-url>/test?retryWrites=true&w=majority”;

  const client = new MongoClient(uri);

  try {

    await client.connect();

    await listDatabases(client);

  } catch (e) {

    console.error(e);

  } finally {

    await client.close();

  }

main().catch(console.error);

Vui lòng chú ý rằng bạn cần cập nhật <username>, <password> và <your-cluster-url> trong URI kết nối với thông tin tài khoản và cụm MongoDB của bạn.

Kết luận 

Bài viết trên đã hướng dẫn cách để kết nối MongoDB với NodeJS bằng cách sử dụng thư viện MongoDB và NodeJS. Trong bài viết, bạn cũng được khuyến nghị sử dụng một vài các tùy chọn hữu ích và được khuyến nghị lưu mã trong một tệp và đặt tên tệp là connection.js để duy trì và sử dụng lại trong tương lai.

Download - Giáo trình thuật toán

1 + 13 =

Tags:

0 Lời bình

Gửi Lời bình

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

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

6 + 12 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM