/ / Cách tạo API CRUD bằng Node, PostgresSQL và Express

Cách tạo API CRUD bằng Node, PostgresSQL và Express

pexels thisisengineering 3861943

API CRUD quản lý dữ liệu thông qua bốn hoạt động cơ sở dữ liệu cơ bản: tạo, đọc, cập nhật và xóa. Bạn có thể tạo một API CRUD đơn giản chỉ với Express và cơ sở dữ liệu PostgreSQL.

Bắt đầu bằng cách tạo một máy chủ Express mà bạn sẽ kết nối PostgreSQL. Sau đó, tạo các hàm CRUD và kết nối chúng với các điểm cuối API. Khi bạn đã làm như vậy, bạn sẽ có thể kết nối Node với PostgreSQL và thực hiện các truy vấn cơ sở dữ liệu trên mỗi tuyến.


Điều kiện tiên quyết để xây dựng API

Để làm theo hướng dẫn này, bạn nên:

  • Cài đặt Node trên máy của bạn.
  • Cài đặt máy chủ PostgreSQL trên máy của bạn.
  • Có kiến ​​thức cơ bản về Express.js.

Tạo máy chủ cấp tốc

Để tạo một máy chủ Express, hãy bắt đầu bằng cách tạo một thư mục mới và nhập vào đó:

mkdir notes
cd notes

Sau đó khởi tạo npm:

npm init -y

Lệnh này sẽ tạo ra một package.json tệp trong thư mục ghi chú. Cuối cùng, cài đặt Express.

npm install express

Tạo một tệp mới có tên index.js và thêm mã sau.

const express = require("express");
const app = express();

app.use(express.urlencoded({
extended: true
}));

app.use(express.json())
app.listen(3000, () => console.log("Listening on port 3000"));

Thao tác này sẽ tạo một máy chủ mới đang lắng nghe ở cổng 3000.

Tạo cơ sở dữ liệu PostgreSQL

Thực thi lệnh sau trong dấu nhắc lệnh psql để tạo cơ sở dữ liệu PostgreSQL có tên là Notesb.

postgres=

Chạy lệnh này để liệt kê tất cả các cơ sở dữ liệu Postgres và kiểm tra xem bạn đã tạo cơ sở dữ liệu Notesb chưa:

postgres=

Kết nối với Cơ sở dữ liệu

Điều đầu tiên, hãy kết nối ứng dụng Node của bạn với máy chủ PostgreSQL. Bạn có thể sử dụng mô-đun node-Postgres.

Chạy phần sau để cài đặt nó qua npm:

npm install pg

Như một phương pháp hay, hãy kết nối với cơ sở dữ liệu trong một tệp riêng biệt.

Tạo một tệp mới có tên db.js và thêm phần sau.

const { Client } = require("pg");
const { user, host, database, password, port } = require("./dbConfig");

const client = new Client({
user,
host,
database,
password,
port,
});

client.connect();
module.exports = client;

Tại đây, bạn đang xuất chuỗi kết nối mà bạn sẽ sử dụng để giao tiếp với cơ sở dữ liệu. Lưu ý rằng bạn đang đọc cài đặt kết nối cơ sở dữ liệu từ một tệp cấu hình được gọi là dbConfig.js. Do đó, hãy tạo dbConfig.js và thêm dữ liệu sau vào đó.

module.exports = {
user: "{dbUser}",
host: "{dbHost}",
database: "notedb",
password: "{dbPassword}",
port: 5432,
};

Hãy nhớ thay thế các chi tiết cơ sở dữ liệu bằng các giá trị cục bộ của riêng bạn.

Tạo bảng PostgreSQL

Trong dấu nhắc lệnh psql, hãy tạo một bảng được gọi là ghi chú. Để bắt đầu, hãy kết nối với cơ sở dữ liệu Notesb bằng lệnh c.

postgres=

Tiếp theo, tạo một bảng trong cơ sở dữ liệu được kết nối bằng lệnh CREATE TABLE.

notedb=
ID SERIAL PRIMARY KEY,
note VARCHAR(255)
);

Bảng này khá đơn giản. Nó chỉ có một ID là khóa chính được tạo tự động và một trường văn bản được gọi là ghi chú.

Tạo ghi chú

Thay vì thực hiện các hoạt động CRUD trong các tuyến, hãy tạo các hàm sẽ tương tác với cơ sở dữ liệu trong một tệp riêng biệt.

Tạo một tệp trợ giúp có tên helper.js và nhập đối tượng kết nối từ db.js.

const client = require("./db");

Sử dụng mã sau để tạo hàm createNote ().

const createNote = (req, res) => {
try {
const { note } = req.body;

if (!note) {
throw Error("Send note in request body");
}

client.query(
"INSERT INTO notes (note) VALUES ($1)",
[note],
(err, data) => {
res.status(201).json({
error: null,
message: "Created new note",
});
}
);
} catch (error) {
res.status(500).json({
error: error.message,
message: "Failed to create new note",
});
}
};

Trước tiên, chức năng này sẽ kiểm tra xem nội dung yêu cầu có bao gồm ghi chú hay không. Nếu không có ghi chú, nó sẽ xuất hiện một lỗi.

Để tạo ghi chú, hàm sử dụng mệnh đề INSERT. Nó trả về một đối tượng JSON chứa thông báo lỗi null và thông báo thành công nếu thành công.

Nhận tất cả ghi chú

Để lấy tất cả các ghi chú từ bảng, hãy sử dụng mệnh đề SELECT *.

const getNotes = (req, res) => {
try {
client.query("SELECT * FROM notes", (err, data) => {
if (err) throw err;

res.status(200).json({
err: null,
notes: data.rows,
});
});
} catch (error) {
res.status(500).json({
err: error.message,
notes: null,
});
}
};

getNotes () gửi mảng ghi chú trong đối tượng phản hồi nếu truy vấn thành công.

Nhận ghi chú bằng ID

API cũng sẽ có một điểm cuối trả về ghi chú theo ID. Trong helper.js, hãy thêm một hàm getNoteById ().

const getNoteById = (req, res) => {
try {
const { id } = req.params;
client.query("SELECT * FROM notes WHERE id=$1", [id], (err, data) => {
if (err) throw err;
res.status(200).json({
err: null,
note: data.rows[0],
});
});
} catch (error) {
res.status(500).json({
err: err.message,
note: null,
});
}
};

Hàm này sẽ trả về một đối tượng JSON chứa ghi chú và một đối tượng lỗi.

Cập nhật ghi chú theo ID

Để cập nhật ghi chú, bạn cần ghi chú và ID của ghi chú đó. Bạn sẽ nhận được ghi chú từ phần thân yêu cầu và ID từ URL.

Hàm updateNoteById () sử dụng mệnh đề CẬP NHẬT để cập nhật ghi chú hiện có bằng ghi chú mới.

const updateNoteById = (req, res) => {
try {
const { id } = req.params;
const { note } = req.body;
client.query(
"UPDATE notes SET note = $1 WHERE id = $2",
[note, id],
(err, data) => {
if (err) throw err;

res.status(201).json({
err: null,
message: "Updated note",
});
}
);
} catch (error) {
res.status(500).json({
err: error.message,
message: "Failed to update note",
});
}
};

Hàm này trả về thông báo thành công nếu bảng được cập nhật và thông báo lỗi nếu bảng không được cập nhật.

Xóa ghi chú theo ID

Để xóa ghi chú theo ID khỏi bảng, hãy sử dụng mã sau.

const deleteNote = (req, res) => {
try {
const { id } = req.params;
client.query("DELETE FROM notes WHERE id=$1", [id], (err, data) => {
if (err) throw err;

res.status(200).json({
error: null,
message: "Note deleted",
});
});
} catch (error) {
res.status(500).json({
error: error.message,
message: "Failed to delete note",
});
}
};

Bây giờ bạn đã tạo tất cả các hàm CRUD, hãy xuất chúng.

Trong helper.js, hãy thêm phần sau.

module.exports = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Bạn sẽ nhập chúng vào index.js khi tạo các điểm cuối API.

Tạo các tuyến API

Bước cuối cùng là tạo các điểm cuối API trong index.js cho mỗi hoạt động CRUD.

Bắt đầu bằng cách nhập tệp helper.js.

const db = require("./helper")

Tiếp theo, tạo từng điểm cuối.

app.get("/notes", db.getNotes);
app.get("/note/:id", db.getNoteById);
app.put("/note/:id", db.updateNoteById);
app.post("/note", db.createNote);
app.delete("/note/:id", db.deleteNote);

API REST để cập nhật cơ sở dữ liệu của bạn

Sau khi hoàn tất, bạn có thể kiểm tra xem API của mình có hoạt động hay không bằng cách sử dụng ứng dụng khách REST như Postman hoặc bằng cách viết các bài kiểm tra đơn vị. Bạn sẽ có thể đảm bảo rằng năm điểm cuối đều hoạt động như bạn mong đợi.

Bạn cũng có thể kiểm tra và quản lý dữ liệu bạn đã thêm vào cơ sở dữ liệu bằng công cụ pgAdmin. Đây là một ứng dụng GUI giúp dễ dàng thực hiện quản trị cơ sở dữ liệu và tương tác với các máy chủ PostgreSQL.

Similar Posts

Leave a Reply

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