前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql
Posted MmM豆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql相关的知识,希望对你有一定的参考价值。
没有数据库的情况已经模拟走通,下面来连接数据库,我们使用mysql,去官网下载然后安装即可
这里以免安装为例
一定要以管理员身份运行
不然就会出现以下错误
cd 到安装路径下的bin目录(以Win10系统以管理 员身份运行Cmd命令行 输入cd后回车无反应,这个时候只要再输入盘符即可)
或者输入 cd /d D:\\mysql-8.0.23-winx64\\bin
执行 mysqld --install 安装mysql服务,然后出现一下提示表示成功
然后初始化mysql, mysqld --initialize --console
初始化会产生随机密码 记住他,
开启mysql服务 net start mysql
登录mysql mysql -u root -p
修改密码
alter user ‘root’@‘localhost’ identified by ‘新密码’;
配置流程(https://www.cnblogs.com/winton-nfs/p/11524007.html)
关于数据库的的可视化工具,我这里选择navicat https://www.jb51.net/database/710931.html
用navicat 或者 node连接mysql报错 client does not support authentication protocol requested by server;
关于启动以后的启动也需要使用管理员窗口
(一)navicat连接数据库创建blogs,和users表
- 点击连接选择mysql,输入连接名字,然后确认一下用户名输入密码
点击一下测试连接
然后确定创建后,左边就会出现,双击打开连接后会变绿色,然后继续悬停上面右键选择新建数据库,字符集选择utf8
成功后,双击打开,然后鼠标悬停在表上,右键新建表
blogs表 id勾选上自增
保存后再次双击左边的blogs表 插入假数据
users表
tips
操作后记得保存 ctrl+s
(二)nodejs 连接mysql
安装mysql 包
npm i mysql -D
src 新建config和db文件夹
├─src
| ├─db
| | └mysql.js
| ├─config
| | └db.js
config 用于管理 库的配置
db.js
const env = process.env.NODE_ENV // 环境参数
// 配置
let MYSQL_CONF
// 本地
if (env === 'dev') {
// mysql
MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: '',
port: '3306',
database: 'myblog'
}
}
// 线上
if (env === 'production') {
// mysql线上的配置,这里先写一样的
MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: '',
port: '3306',
database: 'myblog'
}
}
module.exports = {
MYSQL_CONF,
}
db文件夹包含数据库连接的操作
mysql.js
const mysql = require('mysql')
const {MYSQL_CONF} = require('../config/db')
// 创建连接对象
const con = mysql.createConnection(MYSQL_CONF)
// 开始连接
con.connect()
// 执行sql的函数
function exec(sql){
const promise = new Promise( (resolve, reject) => {
con.query(sql, (err, result) => {
if(err){
console.error(err);
return
}
resolve(result)
})
})
return promise
}
module.exports = {
exec
}
(三)完善API接口对接mysql
controller文件下
blog.js
const { exec } = require('../db/mysql')
const getList = (author,keyword) =>{
//1=1 默认条件防止报错
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 = {}) =>{
// blogData 包含 title content
// 添加成功返回添加id,
const {title,content,author} = blogData
const createTime = Date.now()
const sql = `
insert into blogs (title, content, createtime, author)
values ('${title}', '${content}', ${createTime}, '${author}');
`
return exec(sql).then(insertData => {
// console.log('insertData is ', insertData)
return {
id: insertData.insertId
}
})
}
const updateBlog = (id,blogData = {}) =>{
// id 就是要更新博客的 id
// blogData 是一个博客对象,包含 title content 属性
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('updateData is ', updateData)
if (updateData.affectedRows > 0) {
return true
}
return false
})
}
const delBlog = (id,author) =>{
// id 删除博客的id
const sql = `delete from blogs where id='${id}' and author='${author}';`
return exec(sql).then(delData => {
// console.log('delData is ', delData)
if (delData.affectedRows > 0) {
return true
}
return false
})
}
module.exports = {
getList,
getDetail,
updateBlog,
newBlog,
delBlog
}
user.js
const {exec} = require('../db/mysql')
const login = (username, password) =>{
const sql = `select username, realname from users where username='${username}' and password=${password}`
return exec(sql).then(row => {
console.log('row is',row);
return row[0]? true :false
})
}
module.exports = {
login
}
以上是关于前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql的主要内容,如果未能解决你的问题,请参考以下文章
前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql
前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql
前端进阶全栈入门级教程nodeJs博客开发(二)安装mysql完善api接口对接mysql
前端进阶全栈入门级教程nodeJs博客开发(一)搭建环境与路由