node+express+Sequelize实现web后端数据库操作

廉展鹏
2023-12-01

在实现基于node+express实现基于API后端开发时,操作数据库可自己通过SQL实现。但发现基于node的工具Sequelize 能更好的实现。
Sequelize https://itbilu.com/nodejs/npm/VkYIaRPz-.html此为工具的具体文档。与laravel框架一样实现数据库创建,迁移等一系列工作。
下面链接一个这方面的示例,更好的理解这一工具的应用。
sequelize 工具应用实例
需要说明的是,在实例中没有说支持mysql数据库。但我查 说明是支持的。(Sequelize是一个关系型数据库ORM框架,它基于Promise构建。支持MySQL、PostgreSQL、MariaDB、SQLite和MSSQL几种关系型数据库,功能非常强大。)这篇文章是简版介绍sequelize 简单说明
最后也贴出不使用这一工具其实现代码
链接数据库、执行sql语句

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

// 创建连接对象
const con = mysql.createConnection(MYSQL_CONF);

// 开始连接
con.connect();

// 统一执行mysql 的函数
function exec(sql) {
  const promise = new Promise((resolve, reject) => {
    con.query(sql, (err, result) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(result);
    });
  });
  return promise;
}
module.exports = {
  exec,
};

CRUD实现

const { exec } = require("../db/mysql");
// get list 

const getList = (author, keyword) => {
  let sql = `select * from blogs where 1=1 `;
  
  if (author) {
    sql += `and author='${author}' `;
  }
  if (keyword) {
    sql += `and title like '%${keyword}%' `;
  }
  sql += `order by createtime desc;`;
 
  //  返回promise
  return exec(sql);
};
const getDetail = (id) => {
  const sql = `select * from blogs where id='${id}';`;
  return exec(sql).then((rows) => {
    return rows[0];
  });
};
// 新建博客
const newBlog = (blogData = {}) => {
  // console.log('new blog ',blogData)
  // return {
  //     id:3,
  // }
  const title = blogData.title;
  const content = blogData.content;
  const author = blogData.author;
  const createtime = Date.now();
  const sql = `insert into blogs(title,content,author,createtime) values
    ('${title}','${content}','${author}','${createtime}');
    `;
  return exec(sql).then((insertData) => {
    console.log("new blog ", insertData);
    return { id: insertData.insertId };
  });
};
// 更新博客
const updateBlog = (id, blogData = {}) => {
  // id是更新的博客的ID
  // blogData是更新的数据 affectedRows
  // console.log('update blog data',id,blogData)
  // return true
  const title = blogData.title;
  const content = blogData.content;
  const sql = `update blogs set title ='${title}',content='${content}' where id='${id}';`;
  return exec(sql).then((updateData) => {
    console.log("update blog ", updateData);
    if (updateData.affectedRows >= 1) {
      return true;
    }
    return false;
  });
};
// 删除博客
const delBlog = (id, auther) => {
  const sql = `delete from blogs where id = '${id}' and author = '${auther}';`;
  return exec(sql).then((deleteData) => {
    console.log("delete blog ", deleteData);
    if (deleteData.affectedRows > 0) {
      return true;
    }
    return false;
  });
  return true;
};
module.exports = {
  getList,
  getDetail,
  newBlog,
  updateBlog,
  delBlog,
};


 类似资料: