【前端升全栈】 开发项目之数据存储(MySQL数据库)
目录
1.MySQL简介
2.数据库操作(创建、增加、删除、查询)
3.数据库更新
4.node.js操作mysql
5.nodejs链接mysql做成工具
6.API对接mysql
7.API对接mysql(博客详情和新建)
8.API对接mysql(更新和删除)
9.API对接mysql(登录)
1.MySQL简介
开端:
- mysql介绍、安装和使用;
- Nodejs链接MySQL;
- API链接MySQL;
为什么使用的是MySQL而不是mogondb?
- 因为mysql是企业内最常用的存储工具,一般都有专人运维
- mysql也是社区内最常用的存储工具,有问题随时可查
- 另:mysql本身是一个复杂的数据库软件,本课只讲基本使用
MySQL介绍:
- web server 中最流行的关系型数据库
- 官网可免费下载,用于学习
- 轻量级,易学易用
MySQL workbench:
- 操作MySQL的客户端,可视化操作;
- 下载:http://dev.mysql.com/downloads/workbench/
show databases;可以查看所有数据库(要记得 root 的密码,忘记了,看来只能主机登录).
2.数据库操作(创建、增加、删除、查询)
包含:建库、建表、表操作;建一个 myblog 的数据库,然后就可以来建表(两个表:用
vachar 代表字符串类型,longtext 可以储存 4G 大小的数据。
操作表:
- 增删改查;
- 使用SQL语句;
use+数据库名字就能使用数据库,show tables 就能展示各种表,--加空格就是注释。如果我们变量呃出现了 sql 里面的关键字我们可以加上``就可正常使用。这里由于 id 会自动增加, 所以我们不需要写 id(它的特点是如果定下来数字,不管前面是不是被删了都不会改变原本的值)。
like 是模糊查询,排序的话默认是正序,加多个 desc 可以倒序。
3.数据库更新
4.node.js操作mysql
Nodejs操作MySQL:
- 示例:用demo演示,不考虑使用
- 封装:将其封装为系统可用的工具
- 使用:让API直接操作数据库,不再使用假数据
封装需要考虑线上数据库和线下数据库。 建一个空白文件夹 mysql-test,下面建一个 index.js 同时 npm 初始化,安装 mysql 插件 npm i mysql。 回到 index.js,引入这个插件,创建链接对象,connect 方法 开始连接,通过 query 方法即可执行 sql 语句,然后记得搞 完关闭连接。 注意我们在 node 里面进行修改的话是不会返回修改的内容, 而是返回一个对象,里面有说几行受影响和改变的样子。插入的话也是返回一个对象,里面有 insertId 恰好对应我们的 id。由于不知道密码,我们利用 navicat 重新建了个库。
const mysql =nequire( 'mysql') //引入数据库插件const const = mysql.createConnection({ //创建连接(root默认密码为空>)host: "localhost',user: 'root ',password: "',port: '3306',//默认端口号database: 'myBlog' //连接到inybLog数据库(navicat里面的)
})
con.connect()//连接数据库
const sql = 'select * from blogs'//定义查询语句
con.query(sq1,(err,result)=>{ //执行查询语句if (err){console.log(err)}else {
console.log(result)
}
con.end()/7关闭连接
5.nodejs链接mysql做成工具
const mysql =hequire( 'mysql')
const { MYSQL_CONF } = require('../conf/db')const con = mysql.createConnection(msQL_CONF)//创建连接对象con.connect() //d连接数据库function exed (sql){//执行教据库操作const promise = new Promise((resolve,reject) =>{con.query(sql, (err, result)=>{if (err){reject(err)return // 记得return,不然有错误就卡在这里了
}
resolve(result)
})
})return promise
}
module.exports ={
exec}
6.API对接mysql
7.API对接mysql(博客详情和新建)
const getDetail = (id)=→>{M/获取博客详情
const sql = "select · from blogs where id '$[id}';1/根据id查询对应的博客内容return exec(sql).then((rows) =>{
return rows[ o]/l/由于返回的是一个数组,虽然里面只有一个对象,但是我们还是返回对象的好,毕竟model接收的是对象,
const newBlog =(blogData=o)=> {//新建博客
const title = blogData.title
const content = blogData.content
const author = blogData.author//从博客对象拿到对于的各种数据const createtime = Date.now(
const sql = insert into blogs (title,content,createtime,author)
| values ('s(title) ', 's(content) ', '${(createtime} ', '$(author}')1/根据数据定义对应的sqL语句return exec(sql) .then((insertData)=>{
return
id: insertData.insertId //执行语句得到一对东西,有用的就这个,我们拿到就行
if (method === 'GET' 8& req .path === ' /api/blog/detail') {
const detailData = getDetail(id)
return new SuccessModel (detailData)*/
const detailResult = getDetail(id)
return detai lResult. then( (detailData) => {
return new SuccessModel (detailData)
})
if (method === 'POST' 8&& req.path === ”/api/blog/new ) {
const data = newBL og(req. body)
return new SuccessMode (data)*/
req . body.author = 'nuoduo' //自定&一个假数据
const result = newBlog(req. body)
return result . then((data) => d
return new SuccessModel (data)
国)
8.API对接mysql(更新和删除)
if (method === 'POST' && req.path == '/api/blog/update') {
/* const result = updateBLog(id, req. body)
if (result) {
return new successModeL( )
} else {
return new ErrorModel('更新博客失败”)
}*/
const result = updateBlog(id, req.body) //把要删除的d和postData (即更新的内容)传入
return result . then( (updateData) =》{
if (updateData) {
return new SuccessModel()
} else {
return new ErrModel('更新博客失败”)
}
})
}
9.API对接mysql(登录)
- nodejs连接mysq|,如何执行sq|语句
- 根据NODE_ ENV区分配置
- 封装exec函数, API使用exec操作数据库
const userResult = handleUserRouter(req, res) //管理用户路由
if (userResult) {
userResult . then( (userData) => {
res .end(
JSON.stringify(userData)
})
return
【前端升全栈】 开发项目之数据存储(MySQL数据库)相关推荐
- Android App开发基础篇—数据存储(SQLite数据库)
Android App开发基础篇-数据存储(SQLite数据库) 前言:Android中提供了对SQLite数据库的支持.开发人员可以在应用中创建和操作自己的数据库来存储数据,并对数据进行操作. 一. ...
- web全栈开发项目搭建整体思路和学习路线
web全栈开发 全栈开发技术介绍: 全栈技术指可以完整整个项目搭建的有效集合. 包括:网站的设计,web前端开发,web后端开发,数据库设计,接口和组件,移动端开发,产品设计,系统架构,产品的理念和用 ...
- 全栈修炼:如何从Web前端迈向全栈开发
前言 为什么要向全栈发展? 全栈开发是所有Web开发者的终极梦想,无论你现在是前端开发还是后端开发.并且随着大量开发者的涌入,前端和后端岗位都面临者激烈的竞争,全栈已经不是加分项,越来越成为必须项.如 ...
- Web前端:全栈开发人员——专业知识和技能
一个全栈开发人员知道开发的前端和后端.开发人员需要编写代码,遵循敏捷方法,编写应用程序并执行它. 另一方面,他们还需要熟练地开发web应用程序的UI和UX.完整的堆栈开发人员技能包括设计应用程序,使其 ...
- 两个读书笔记:springboot+vue.js分布式组件全栈开发训练营 + 大数据开发基础
(springboot+vue.js分布式组件全栈开发训练营原文在notion中, 大数据开发在思维导图中, 这个博客只是保存, 无法阅读. ) what is different between s ...
- python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)...
昨日内容回顾 外键的变种三种关系:多对一:左表的多 对右表一 成立左边的一 对右表多 不成立foreign key(从表的id) refreences 主表的(id)多对多建立第三张表(foreign ...
- 【前端升全栈】 五分钟了解Node.js
- 安排,Java青橙商城前后台全栈开发项目实战与秒杀架构
来源: 来自网络,如侵权请告知博主删除
- ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用
<ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用>是一本旨在引领我们进入全栈开发世界的综合指南.通过结合强大的ChatGPT技术和全栈开发的实践,我们将 ...
最新文章
- 云计算调查显示 希望与问题同在
- 【机器学习算法-python实现】最大似然估计(Maximum Likelihood)
- exit()与_exit()的区别
- C++学习笔记-----永远不要在派生类中改变虚函数的默认参数值
- netty+mina 区别概要
- spring项目的 WebApplicationContext 初始化两次的解决方法
- 转载 二叉树的创建、遍历、深度、叶子节点数
- 翻转单词顺序列C语言,剑指offer刷题之c、c++实现的翻转单词顺序列
- 星星之火OIer:编程社四连测总结
- 「TCG 规范解读」初识嵌入式和工业工作组
- 抖音上免费涨粉的方法,制作出一个爆款视频!
- 网络知识--域名解析的工作流程
- 地球空间数据交换格式
- 【计算机网络浏览器原理】XSS攻击
- 【解禁】钉钉直播回放下载
- Power BI数据查询编辑
- 2021-2027全球与中国针叶樱桃提取物市场现状及未来发展趋势
- 教你如何把域名解析到自己的服务器上
- 理光Ricoh Aficio MP 2014 一体机驱动
- itext设置字体间距_时间再忙都抽身看看,3个技巧解决CAD字体乱码,再不用发愁...