/ / Cách sử dụng PostgreSQL với Sequelize trong Node.js

Cách sử dụng PostgreSQL với Sequelize trong Node.js

elephant in forest

Sequelize là một trình ánh xạ quan hệ đối tượng (ORM) của Node.js cung cấp API dễ sử dụng cho các cơ sở dữ liệu quan hệ như Oracle, PostgreSQL, MySQL, MariaDB, SQLite, v.v.


PostgreSQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở (RDBMS) được sử dụng rộng rãi, nổi tiếng với các tính năng mở rộng, bảo mật tuyệt vời và khả năng mở rộng.

PostgreSQL tương thích với nhiều ngôn ngữ lập trình, bao gồm cả JavaScript, khiến nó trở thành lựa chọn lý tưởng cho các ứng dụng dựa trên dữ liệu và web. Tại đây, bạn sẽ học cách thiết lập cơ sở dữ liệu Postgres trong Node.js bằng Sequelize.


Bước 1: Cài đặt phụ thuộc

Trước khi bạn có thể sử dụng PostgreSQL, bạn cần cài đặt nó trên hệ thống của mình. Để tải xuống PostgreSQL, hãy điều hướng đến trang web PostgreSQL và chọn hệ điều hành của bạn. Nếu bạn gặp sự cố trong quá trình này trên macOS, hãy kiểm tra cài đặt PostgreSQL trên macOS.

Ngoài ra, bạn có thể sử dụng PostgreSQL trên đám mây bằng cách tận dụng các nền tảng như ElephantSQL cung cấp dịch vụ PostgreSQL.

Tiếp theo, cài đặt sắp xếp lại bằng cách chạy lệnh sau:

 npm install sequelize

Sau đó, cài đặt trình điều khiển cơ sở dữ liệu PostgreSQL bằng cách chạy lệnh bên dưới:

 npm install pg pg-hstore

Bước 2: Kết nối với Cơ sở dữ liệu PostgreSQL

Trong thư mục nguồn của dự án của bạn, hãy tạo một cấu hình thư mục. bên trong cấu hình thư mục, tạo một db.js tài liệu. Tệp này sẽ chứa tất cả mã kết nối ứng dụng Node.js của bạn với cơ sở dữ liệu PostgreSQL.

Tiếp theo, trong của bạn db.js tập tin, nhập khẩu phần tiếp theo từ sắp xếp lại.

 const { Sequelize } = require("sequelize");

Tiếp theo, bạn cần tạo một phần tiếp theo ví dụ. Phiên bản này lấy các tham số kết nối như tên cơ sở dữ liệu, tên người dùng và mật khẩu làm đối số. Ngoài ra, nó lấy một URI kết nối làm đối số.

Ví dụ:

 
const sequelize = new Sequelize('database', 'username', 'password')


const sequelize = new Sequelize(process.env.POSTGRESQL_DB_URI)

Ngoài ra, hàm tạo này lấy một đối tượng cấu hình làm đối số tùy chọn.

Tiếp theo, kiểm tra kết nối serialize của bạn bằng cách thêm mã bên dưới db.js tài liệu:

 const testDbConnection = async () => {
  try {
    await sequelize.authenticate();
    console.log("Connection has been established successfully.");
  } catch (error) {
    console.error("Unable to connect to the database:", error);
  }
};

Khối mã ở trên gọi sắp xếp lại.xác thực() để kiểm tra xem kết nối có ổn không và in “Kết nối đã được thiết lập thành công.” để an ủi nếu nó là. Nếu có lỗi kết nối, nó sẽ in “Không thể kết nối với cơ sở dữ liệu:” cùng với lỗi.

Cuối cùng, xuất phiên bản tiếp theo và testDbConnection chức năng.

 module.exports = { sq: sequelize, testDbConnection };

Bước 3: Tạo mô hình tuần tự

Trong thư mục nguồn của dự án của bạn, hãy tạo một người mẫu thư mục. Thư mục này sẽ chứa tất cả các mô hình phần tiếp theo của bạn. Tiếp theo, tạo một tệp mô hình. Tên bạn đặt cho tệp sẽ cung cấp thông tin về biểu diễn của mô hình.

Trong tệp mô hình của bạn, hãy nhập phiên bản tiếp theo.

 
const { sq } = require("../config/db");

Tiếp theo, nhập khẩu Loại dữ liệu từ sắp xếp lại.

 const { DataTypes } = require("sequelize");

Loại dữ liệu cho phép bạn đặt loại dữ liệu bắt buộc cho từng thuộc tính trên mô hình của mình.

Bạn có thể tạo một mô hình sắp xếp lại mới đại diện cho một bảng trong cơ sở dữ liệu của mình bằng cách gọi hàm định nghĩa phương pháp trên phiên bản tiếp theo của bạn.

Các định nghĩa phương thức nhận hai đối số: Tên mô hình và một đối tượng thuộc tính. Tên mô hình đại diện cho tên của mô hình. Đối tượng thuộc tính đại diện cho các cột của cơ sở dữ liệu, với mỗi thuộc tính đại diện cho một cột.

Đây là một ví dụ về mô hình serialize:

 const User = sq.define("user", {
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    primaryKey: true,
  },

  fullName: {
    type: DataTypes.STRING,
  },
  
  age: {
    type: DataTypes.INTEGER,
  },

  employed: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
  },
});

Khối mã trên định nghĩa một Người dùng mô hình với một e-mail, Họ và tên, tuổicó việc làm của cải.

Các e-mail thuộc tính là một loại chuỗi không thể để trống (allowNull: sai) và cũng đóng vai trò là khóa chính cho Người dùng bàn (khóa chính: đúng). Các Họ và têntuổi thuộc tính là một chuỗi (DataTypes.STRING) và kiểu số nguyên (DataTypes.INTEGER), tương ứng. Các có việc làm thuộc tính là một loại boolean với giá trị mặc định là SAIcó nghĩa là nếu nó không được chỉ định, nó sẽ tự động được đặt thành false trong cơ sở dữ liệu.

Tiếp theo, hãy gọi cho đồng bộ hóa phương pháp trên mô hình của bạn. Phương thức này lấy một đối tượng cấu hình làm đối số. Tùy thuộc vào các tùy chọn trong đối tượng cấu hình, đồng bộ hóa phương pháp có thể:

  • Người dùng.sync(): Tạo bảng nếu nó không tồn tại và không làm gì nếu nó tồn tại.
  • User.sync({ force: true }): Tạo bảng và xóa bảng đầu tiên nếu nó đã tồn tại.
  • User.sync({ thay đổi: true }): Kiểm tra trạng thái hiện tại của bảng trong cơ sở dữ liệu và thực hiện các thay đổi cần thiết trong bảng để làm cho nó khớp với mô hình.

Ví dụ:

 User.sync().then(() => {
  console.log("User Model synced");
});

Khối mã ở trên tạo bảng cơ sở dữ liệu cho Người dùng mô hình nếu nó không tồn tại và không làm gì nếu nó tồn tại.

Cuối cùng, xuất mô hình của bạn:

 module.exports = User;

Truy vấn cơ sở dữ liệu PostgreSQL

Sequelize cung cấp các phương pháp khác nhau cho phép bạn tương tác với cơ sở dữ liệu PostgreSQL của mình mà không cần viết các lệnh SQL thô.

Lưu dữ liệu vào PostgreSQL

Để lưu dữ liệu vào cơ sở dữ liệu PostgreSQL, hãy gọi tạo nên trên mô hình của bạn và chuyển một đối tượng triển khai mô hình PostgreSQL làm đối số.

Ví dụ:

 const mike = User.create({
  email: "mike@email.com",
  fullName: "Mike Smith",
  age: 30,
  employed: true,
});

Khối mã trên tạo ra một Người dùng trường hợp của mik trong cơ sở dữ liệu của bạn và tự động tạo một id duy nhất.

Lấy dữ liệu từ PostgreSQL

Dữ liệu có thể được truy xuất theo nhiều cách từ cơ sở dữ liệu PostgreSQL bằng cách sử dụng tính năng sắp xếp lại, nhưng nó phụ thuộc vào bản chất của dữ liệu bạn muốn nhận.

Các phương pháp phổ biến nhất để lấy dữ liệu là tìm mộttìm tất cả các phương pháp. Các tìm tất cả trả về tất cả các trường hợp dữ liệu đáp ứng một truy vấn nhất định, trong khi tìm một trả về phiên bản đầu tiên thỏa mãn truy vấn.

Ví dụ:

 
const users = await User.findAll();

Đoạn mã trên sẽ trả về tất cả các Người dùng trường hợp trong cơ sở dữ liệu.

Bạn có thể lọc qua dữ liệu trả về bằng cách sử dụng Ở đâu tuyên bố. Câu lệnh này cho phép bạn thêm một số điều kiện vào truy vấn. Truy vấn của bạn sẽ chỉ trả về các trường hợp đáp ứng các điều kiện đó.

Ví dụ:

 User.findAll({
  where: {
    employed: false
  }
});

Đoạn mã trên sẽ trả về tất cả các Người dùng trường hợp với họ có việc làm thuộc tính được đặt thành SAI trong cơ sở dữ liệu.

Cập nhật dữ liệu trên PostgreSQL

Bạn có thể cập nhật dữ liệu trên cơ sở dữ liệu PostgreSQL bằng cách gọi cập nhật phương thức và chuyển một bộ lọc làm đối số.

Ví dụ:

 await User.update({ employed: true }, {
  where: {
    employed: false
  }
});

Đoạn mã trên thay đổi tất cả các Người dùng trường hợp với một có việc làm giá trị của SAI ĐẾN ĐÚNG VẬY.

Ngoài ra, bạn có thể cập nhật dữ liệu bằng cách sửa đổi thủ công các thuộc tính mà bạn muốn thay đổi và gọi hàm cứu phương pháp trên ví dụ.

Ví dụ:

 const userMike = await User.findOne({ where: { email: "mike@email.com" } });

if(userMike !== null) {
  userMike.email = "newMike@gmail.com"
  await userMike.save()
}

Đoạn mã trên truy vấn cơ sở dữ liệu cho người dùng có email “mike@email.com” bằng cách sử dụng tìm một phương pháp. Nếu tìm thấy người dùng, nó sẽ gán lại thuộc tính email cho “newMike@gmail.com” và gọi cứu phương pháp cập nhật cơ sở dữ liệu.

Xóa dữ liệu trên PostgreSQL

Bạn có thể xóa dữ liệu trên PostgreSQL bằng cách gọi hủy hoại phương thức và chuyển một bộ lọc làm đối số.

Ví dụ:

 await User.destroy({
  where: {
    email: "newMike@gmail.com"
  }
});

Đoạn mã trên truy vấn cơ sở dữ liệu cho người dùng có email “newMike@gmail.com” và xóa người dùng khỏi cơ sở dữ liệu.

Lợi ích của việc sử dụng PostgreSQL với Sequlize

Viết các truy vấn SQL thô để tương tác với cơ sở dữ liệu PostgreSQL có thể gây rắc rối. Với Sequelize, bạn có thể dễ dàng xác định các mô hình, tạo liên kết giữa chúng và truy vấn cơ sở dữ liệu bằng API đơn giản và trực quan. Ngoài ra, bạn có thể sử dụng các ORM khác, chẳng hạn như TypeORM, để tương tác với cơ sở dữ liệu PostgreSQL mà không gặp rắc rối khi viết các truy vấn SQL thô.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *