CRUD là từ viết tắt của "TẠO, ĐỌC, CẬP NHẬT, XÓA" trong SQL. Về cơ bản, những gì chúng tôi sẽ trình bày là cách sử dụng MySQL trong Node JS. Có rất nhiều hướng dẫn về cách tạo CRUD bằng Mongodb, nhưng điều chúng tôi thực sự muốn trình bày ở đây là cách sử dụng SQL trong Node Js
BẠN CẦN GÌ ĐỂ LÀM THEO HƯỚNG DẪN NÀY?
ES6/ES7
MYSQL
MỘT SỐ KIẾN THỨC CƠ BẢN VỀ NÚT
CHÚNG TÔI SẼ XÂY DỰNG GÌ?
Chúng tôi sẽ tạo DANH SÁCH VIỆC LÀM với Node JS bằng ES6 và Common JS. Tất cả những gì chúng ta cần trong dự án này là "lời hứa-mysql". Hãy cài đặt. npm i -s promise-mysql
joanvasquez@local-coderghost:~/git/github/NodeJs-MySQL$ npm i -s promise-mysql
+ promise-mysql@3.3.1
updated 1 package and audited 18 packages in 1.21s
found 0 vulnerabilities
Sau khi cài đặt gói promise-mysql, hãy tạo cấu trúc của dự án
# APP STRUCTURE
* app.js -> the main file to run our project
* dbConnection.js
* queries
- queries.js
* Dao
- TodoDao.js
TIME TO CODE
Điều đầu tiên chúng ta cần làm là tạo dbConnection. js
const mysql = require['promise-mysql'];
const dbConfig = {
user: "joanvasquez",
password: "Password2288_",
database: "todo_dev",
host: "localhost",
connectionLimit: 10
}
module.exports = async [] => {
try {
let pool;
let con;
if [pool] con = pool.getConnection[];
else {
pool = await mysql.createPool[dbConfig];
con = pool.getConnection[];
}
return con;
} catch [ex] {
throw ex;
}
}
Như chúng ta có thể thấy, chúng ta có một đối tượng tên là dbConfig chỉ chứa thông tin cần thiết để kết nối với Cơ sở dữ liệu. Sau đó, chúng tôi xuất một hàm không đồng bộ sẽ trả về kết nối được lấy từ nhóm kết nối. Bây giờ, hãy viết một số truy vấn để thực hiện CRUD của chúng tôi
module.exports = {
insert_todo: `INSERT INTO tbl_todo[title, completed] VALUES[?, ?]`,
read_todo: `SELECT * FROM tbl_todo`,
update_todo: `UPDATE tbl_todo SET tbl_todo.title = ?, tbl_todo.completed = ? WHERE tbl_todo.id = ?`,
delete_todo: `DELETE FROM tbl_todo WHERE tbl_todo.id = ?`
}
Sau khi tạo các truy vấn, chúng ta phải tạo một DAO và sử dụng các truy vấn của mình, ý tôi là, tại sao không?
const dbConnection = require["../dbConnection"];
const queries = require["../queries/queries"];
module.exports = class TodoDao {
async saveEntity[entity] {
let con = await dbConnection[];
try {
await con.query["START TRANSACTION"];
let savedTodo = await con.query[
queries.insert_todo,
[entity.title, entity.completed]
];
await con.query["COMMIT"];
entity.id = savedTodo.insertId;
return entity;
} catch [ex] {
await con.query["ROLLBACK"];
console.log[ex];
throw ex;
} finally {
await con.release[];
await con.destroy[];
}
}
async updateEntity[entity] {
let con = await dbConnection[];
try {
await con.query["START TRANSACTION"];
await con.query[queries.update_todo, [
entity.title,
entity.completed,
entity.id
]];
await con.query["COMMIT"];
return true;
} catch [ex] {
await con.query["ROLLBACK"];
console.log[ex];
throw ex;
} finally {
await con.release[];
await con.destroy[];
}
}
async deleteEntity[id] {
let con = await dbConnection[];
try {
await con.query["START TRANSACTION"];
await con.query[queries.delete_todo, [id]];
await con.query["COMMIT"];
return true;
} catch [ex] {
await con.query["ROLLBACK"];
console.log[ex];
throw ex;
} finally {
await con.release[];
await con.destroy[];
}
}
async readEntities[] {
let con = await dbConnection[];
try {
await con.query["START TRANSACTION"];
let todo = await con.query[queries.read_todo];
await con.query["COMMIT"];
todo = JSON.parse[JSON.stringify[todo]];
return todo;
} catch [ex] {
console.log[ex];
throw ex;
} finally {
await con.release[];
await con.destroy[];
}
}
};
Lớp này có tất cả các phương thức cho CRUD. Tất cả những gì chúng ta cần làm là "BẮT ĐẦU GIAO DỊCH, thực hiện truy vấn của chúng ta và "CAM KẾT" với CƠ SỞ DỮ LIỆU". Cuối cùng, chúng ta phải thực thi các phương thức CRUD
const TodoDao = require["./Dao/TodoDao"];
const todoDao = new TodoDao[];
const app = async [] => {
let savedTodo = await todoDao.saveEntity[{
title: "Read a book of JS",
completed: 0
}];
console.log["Saved todo --> ", savedTodo]
savedTodo.completed = 1;
let isUpdated = await todoDao.updateEntity[savedTodo];
console.log["Is it updated --> ", isUpdated];
let todoList = await todoDao.readEntities[];
console.log["List of todo --> ", todoList];
let isDeleted = await todoDao.deleteEntity[savedTodo.id];
console.log["Is it deleted --> ", isDeleted]
}
app[];
Và kết quả
Saved todo --> { title: 'Read a book of JS', completed: 0, id: 1 }
Is it updated --> true
List of todo --> [ { id: 1, title: 'Read a book of JS', completed: 1 } ]
Is it deleted --> true
Nút. jsMySQLJsonSQL
Bài báo cáo
Thưởng thức bài viết này?
31
Chia sẻ
Joan Manuel Vasquez
Xin chào, tên tôi là Joan Vasquez và tôi là một người yêu mã. Tôi thích tìm hiểu các công nghệ mới và phát triển các ứng dụng
Theo
Khám phá và đọc thêm các bài viết từ Joan Manuel Vasquez
bắt đầu
Thưởng thức bài viết này?
Để lại một lượt thích và bình luận cho Joan
31
Gửi đi
Raymond Kalumba Joseph
3 năm trước
Cảm ơn, vì bài viết hay Joan, rất thích cấu trúc mã, đã thực sự hiểu rõ hơn về cách sử dụng async-await ở phần cuối của tôi
Hồi đáp
Rapsanjani
3 năm trước
This article is helpful by using with CRUD Operation in Expressjs with MVC Pattern in Express, But Let me know that How to send flash message after inserting, updating, or deleting the data
Hồi đáp
Raja Gopalan
4 năm trước
Thú vị nhưng không hoàn toàn rõ ràng [ít nhất là với tôi]. Tôi đã khởi động chương trình sau khi tạo tệp và thư mục nhưng gặp lỗi này. Có lẽ ai đó có thể làm rõ?