Hầu hết các ứng dụng trong thế giới thực đều cần một cơ sở dữ liệu để hoạt động. Có nhiều loại cơ sở dữ liệu trong đó phổ biến nhất là cơ sở dữ liệu quan hệ (SQL) và cơ sở dữ liệu phi quan hệ (NoSQL). Đối với hướng dẫn này, chúng ta sẽ sử dụng cơ sở dữ liệu quan hệ với sự trợ giúp của thư viện npm có tên là mysql2.
MySQL là gì?
MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở. Nó là mã nguồn mở và đáng tin cậy cho cả các ứng dụng quy mô nhỏ và quy mô lớn.
Thiết lập bảng và dữ liệu
Mở Workbench và thêm kết nối mới bằng cách sử dụng mật khẩu đã tạo trong quá trình cài đặt.
Chạy truy vấn này để tạo cơ sở dữ liệu mới:
CREATE DATABASE sicMundus;
Chạy truy vấn này để sử dụng cơ sở dữ liệu được tạo ở trên:
USE sicMundus;
Chạy truy vấn tạo này để tạo một bảng mới có tên sicMundus:
CREATE TABLE sicMundus(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
firstName varchar(255) NOT NULL,
lastName varchar(255)
);
Sau khi tạo bảng, hãy chạy lệnh này để chèn một số giá trị vào bảng này:
const connection = require('./connection');
async function getCouncilMembers() {
return new Promise((resolve, reject) => {
connection.query('Select * from jediCouncil', (err, rows) => {
if(err)
reject(err);
else
resolve(rows);
});
});
}
function getCouncilMemberById(id) {
return new Promise((resolve, reject) => {
connection.query('SELECT * FROM jediCouncil where id = ?',[id], (err, rows) => {
if(err)
reject(err);
else
resolve(rows);
});
});
}
function addCouncilMember(firstName, lastName) {
return new Promise((resolve, reject) => {
connection.query('INSERT INTO jediCouncil (firstName, lastName) VALUES (?, ?)', [firstName, lastName], (err) => {
if(err)
reject(err);
else
resolve();
});
});
}
function editCouncilMember(id, firstName, lastName) {
return new Promise((resolve, reject) => {
connection.query('UPDATE jediCouncil SET firstName = (?), lastName = (?) where id = (?)', [firstName, lastName, id], (err) => {
if(err)
reject(err);
else
resolve();
});
});
}
function removeCouncilMember(id) {
return new Promise((resolve, reject) => {
connection.query('DELETE FROM jediCouncil WHERE id = (?)', [id], (err) => {
if(err)
reject(err);
else
resolve();
});
});
}
module.exports = {
getCouncilMembers,
getCouncilMemberById,
addCouncilMember,
editCouncilMember,
removeCouncilMember
};
index.js
var express = require('express');
var bodyParser = require("body-parser");
const council = require('./council');
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// GET ALL
app.get('/council', async function(req, res){
const councilMembers = await council.getCouncilMembers();
res.send({councilMembers});
});
// GET
app.get("/council/:id", async function(req, res) {
const id = req.params.id;
const councilMember = await council.getCouncilMemberById(id);
res.send(councilMember);
});
// POST
app.post("/council", async function(req, res) {
const firstName = req.body.firstName;
const lastName = req.body.lastName;
await council.addCouncilMember(firstName, lastName);
res.send({"message": "Success"});
});
// PUT
app.put("/council/:id", async function(req, res) {
const id = req.params.id;
const firstName = req.body.firstName;
const lastName = req.body.lastName;
await council.editCouncilMember(id,firstName,lastName);
res.send({"message": "Success"});
});
// DELETE
app.delete("/council/:id", async function(req, res) {
const id = req.params.id;
await council.removeCouncilMember(id);
res.send({"message": "Success"});
});
app.listen(process.env.PORT || 3000,function(req,res){
console.log("Server Started!");
});
To run the server run this command in the terminal in the project directory:
node index.js
You will see the message in the console ‘Server Started!’ which means the server is up and running. You can go to Chrome and go localhost:3000/council to get response from your server: