Nút js crud mysql mvc

Geshan là một kỹ sư phần mềm dày dạn kinh nghiệm với hơn một thập kỷ kinh nghiệm về kỹ thuật phần mềm. Anh ấy rất quan tâm đến kiến ​​trúc REST, microservice và điện toán đám mây. Ông cũng viết blog tại geshan. com. np

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

8

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

8

Hãy là người đầu tiên chia sẻ ý kiến ​​của bạn

Hỗ trợ đánh dấu hương vị GitHub

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õ?

Chủ Đề