在实现基于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,
};