前端进阶全栈入门级教程nodejs博客开发(二)安装mysql完善api接口对接mysql(代码片段)

MmM豆 MmM豆     2022-11-17     264

关键词:

没有数据库的情况已经模拟走通,下面来连接数据库,我们使用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表

  1. 点击连接选择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博客开发(一)搭建环境与路由(代码片段)

阅读本篇文章时候,需要前端有一定基础后,想要进阶全栈,或者了解后端工作方式阅读,能更好的提高,前后分离对接的理解,本篇只会,概况的带领操作一遍,后端开发。简单易懂。文章目录... 查看详情

前端进阶全栈入门级教程nodejs博客开发(二)安装mysql完善api接口对接mysql(代码片段)

没有数据库的情况已经模拟走通,下面来连接数据库,我们使用mysql,去官网下载然后安装即可下载地址这里以免安装为例一定要以管理员身份运行不然就会出现以下错误​cd到安装路径下的bin目录(以Win10系统以... 查看详情

前端进阶全栈入门级教程nodejs博客开发(二)安装mysql完善api接口对接mysql(代码片段)

没有数据库的情况已经模拟走通,下面来连接数据库,我们使用mysql,去官网下载然后安装即可下载地址这里以免安装为例一定要以管理员身份运行不然就会出现以下错误​cd到安装路径下的bin目录(以Win10系统以... 查看详情

nodejs系列课程,从入门到进阶帮你打通全栈

...个具有争议的全栈开发工程师。要不要学习Nodejs如果你是前端开发工程师,你本地电脑上不可避免的要安装Nodejs,作为工具也好,作为服务器也好,要帮助你做掉很多又脏又累的事情, 查看详情

全栈开发系列

...SS快速入门-实用技巧CSS快速入门-float和positionCSS快速入门-前端布局1CSS快速入门-前端布局2CSS快速入门-后台布局  查看详情

入门到精通❤️「java工程师全栈知识路线」

持续更新中…Vue前端开发章节内容实践练习Vue.js高效前端开发•(实践练习)第1章Vue.js高效前端开发•【一、初识Vue.js】第2章Vue.js高效前端开发•【二、Vue基本指令】第3章Vue.js高效前端开发•【三、Vue列表渲染】第4章V... 查看详情

gulp的入门级教程

gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且大大提... 查看详情

web前端培训课程都学习啥内容?

1.第一阶段:前端页面重构内容包含了:PC端网站布局项目、HTML5+CSS3基础项目、WebApp页面布局项目2.第二阶段:JavaScript高级程序设计内容包含:原生JavaScript交互功能开发项目、面向对象进阶与ES5/ES6应用项目、JavaScript工具库自主... 查看详情

2023年web前端开发学习路线图

目录前言第一阶段:新手入门1.Web前端零基础入门HTML5+CSS3+前端项目2.移动web开发实战第二阶段:技术进阶1.JavaScript深入浅出-0基础入门神器2.JavaScript核心之WebAPIs3.数据交互&异步编程-前端进阶Ajax零基础入门第三阶... 查看详情

web前端工程师入门需要学啥?

前端入门学习:一、Web网页基础学习路线:HTML入门基本内容,CSS+DIV的基础知识,选择器,盒子模型,网页布局,Photoshop二、Web编程基础学习路线:JavaScript基础,BOM和DOM模型,事件处理,jQuery,交互及动画,jQuery优质插件,文档... 查看详情

vue进阶(贰零陆):vue培训课件(代码片段)

一、前言为方便前端开发入门级童鞋掌握前端开发框架Vue,对其有一个大致认知,特梳理此PPT。本文主要从走近vue、项目实战、学习进阶三个层面带你认识前端开发框架Vue。二、正文三、拓展阅读《Vue专栏》更多内容详... 查看详情

node入门教程目录

...84JS基础教程如果您没有js的基础,建议您先学一下老马的前端免费视频教程tablelist第一章:NodeJS概述第二章:NodeJS安装第三章:NodeJs第一个程序第四章:global全局变量第五章:node模块化(上) 查看详情

全栈开发之html快速入门

一、HTML是什么?HTML指的是超文本标记语言(Hyper Text Markup Language)HTML不是一种编程语言,而是一种标记语言 (markuplanguage)标记语言是一套标记标签 (markuptag)HTML使用标记标签来描述网页二、HTML基本结构<html>---... 查看详情

有没有好一点的,web前端书推荐一下,全面一点的,谢谢

【国家高等职业院校课程改革web前端学科建设者】爱前端出品业内首套《全栈大前端系列教程》7本,《HTML和CSS实战教程》、《JavaScript实战教程》、《jQuery和Ajax实战教程》、《HTML5和CSS3战教程》、《Node.js实战教程》、《React和Vu... 查看详情

thinkjs框架入门详细教程开发环境

一、前端标配环境1、nodeJS正确安装,可以参考:http://www.cnblogs.com/chengxs/p/6221393.html2、git正确安装,可以参考:http://www.cnblogs.com/chengxs/p/6244023.html 二、安装ThinkJS命令npminstall-gthink-cli安装完成后,系统中会有 thinkjs  查看详情

python需要学习啥内容,好学吗?

...进程、队列、IO多路模型、Mysql数据库开发等。阶段三:前端开发Python全栈开发与人工智能之前端开发知识学习内容包括:Html、CSS、JavaScript开发、Jquery&bootstrap开发、前端框架VUE开发等。阶段四:WEB框架开发Python全栈开发与人工... 查看详情

我的全栈工程师之旅

...前我一直做的是php开发,也一直比较忙,没时间安排学习前端,现在终于有点时间了,鉴于现在前端开发大行其道,作为一个合格的开发者,也改学习学习了。我准备在半个月能搞定这些前端开发的知识,虽无法做到完全精通,... 查看详情

前端开发入门到进阶第三集定时器

varmi=0; vartimer=setTimeout(handler,1000); functionhandler() if(mi==5) $(".item-desc.desc-part").empty(); clearTimeout(timer); return;你没有在clearTime 查看详情