重识(拾)Node

是谁在敲打我窗😯,是Node.png
nvm

node版本管理工具,可以切换多个nodejs版本

  • 安装

  • 使用

    • nvm list: 查看当前所有node版本
    • nvm install v10.13.0: 安装指定的版本
    • nvm uninstall : 卸载某个版本
    • nvm use --delete-prefix 10.13.0: 切换到指定版本
Http请求概述

DNS解析,建立TCP连接(3次握手🤝),发送http请求
server端接收到http请求,处理,并返回
客户端接收到返回数据,处理数据(如渲染页面)

常用的请求方式
  • GET
    客户端向server端获取数据,通过querystring来传递数据,浏览器直接访问,发送get请求
const http = require('http')
const querystring = require('querystring')

const server = http.createServer((req, res) => {
  console.log('method:', req.method) // GET
  const url = req.url // 请求完整的url
  console.log('url:', url)
  req.query = querystring.parse(url.split('?')[1]) // 解析querystring
  console.log('query:', req.query)
  res.end(JSON.stringify(req.query)) // 返回querystring
})
server.listen(8002)
console.log('OK啦')
浏览器打开.png
  • POST

客户端要向服务端传递数据,通过post data传递数据,使用postman或者apifox等工具模拟请求

const http = require('http')
const server = http.createServer((req, res) => {
    if(req.method === 'POST') {
        // 数据格式
        console.log('content-type', req.headers['content-type'])
        // 接收数据
        let postData = ""
        req.on('data', chunk => {
            postData += chunk.toString()
        })
        req.on('end', () => {
            console.log(postData)
            res.end('hello world') // 在这里返回,因为是异步
        })
    }
})
server.listen(8000)
console.log('OK啦')
image.png
模拟.png
测试项目
  • 环境搭建
    1. nodemon监听文件变化,自动重启node
    npm install --save nodemon
    
    1. cross-env - npm (npmjs.com)
      设置环境变化,兼容mac linux 和 windows
    npm install --save cross-env
    
  • 环境配置
    1. package.json
    {
    "name": "blog-1",
    "version": "1.0.0",
    "description": "",
    "main": "bin/www.js",
    "dependencies": {
      "cross-env": "^7.0.3",
      "nodemon": "^3.0.1"
    },
    "devDependencies": {},
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "dev": "cross-env NODE_ENV=dev nodemon ./bin/www.js",
      "pro": "cross-env NODE_ENV=production nodemon ./bin/www.js"
    },
    "keywords": [],
    "author": "",
    "license": "ISC"
    }
    
    1. bin/www.js
    // server
    const http = require('http')
    
    const PORT = 8000
    const serverHandle = require('../app')
    
    const server = http.createServer(serverHandle)
    server.listen(PORT)
    
    1. app.js
     // 业务代码
    const serverHandle = (req, res) => {
      // 设置返回格式为 JSON
      res.setHeader('Content-type', 'application/json')
    }
    module.exports = serverHandle
    
  • MySql
    1. 介绍

      • web server 中最流行的关系型数据库
      • 官网可免费下载,学习
      • 轻量级,易学易用
    2. 安装
      注:执行过程中需要输入root用户名的密码,要记住这个密码

    3. 可视化工具
      mysql workbench 操作mysql的客户端,可视化操作,下载
      当然还有我们的小猫爪Navicat大家自行下载哈~

    4. 操作数据库

    • 建库-举个🌰🌰🌰


      blog.png
    • 建表-举个🌰🌰🌰


      user.png
    • 表操作(增删改查)

    增:sql语句前面加-- 表示注释当前查询
      // 增:password是mysql的关键字需要加``转成普通的字段名
    insert into user(username, `password`, 'realname')values("zhangsan","123","张三");
    
    delete from user where username='lisi';
    

    📌 通过做标记的方式删除


    status列.png
update user set status='0' where username='lisi';
select * from user where status='1'
// 查询satus不等于0的数据
select * from users where status <> 0
软删除.png

🍬 直接执行会报错提示正在运行安全模式

update user set realname='张三6' where username='zhangsan';  //    
报错啦.png

🍬 解决办法

 // 执行成功后这条命令可以删掉啦
SET SQL_SAFE_UPDATES = 0;

🍬 再次执行更新命令

成功啦.png
   select * from user; // 整张表
   select id,username from user; // 根据列查询
   select * from user where username='zhangsan' and `password` = '123';  // 根据条件查询and-且or-或
   select * from user where username like '%zhang%';  // 模糊查询
   select * from user where password like '%1%' order by id; // 按照id进行正序排列 desc倒序排列
  • NodeJs 操作mysql
  1. 下载
npm install --save mysql
  1. index.js
const mysql = require('mysql')

// 创建连接对象
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'myblog'
})

// 开始连接
con.connect()

// 执行 sql 语句
const sql = 'select * from user;'
con.query(sql, (err, result) => {
    if(err) {
        console.error(err);
    }
    console.log(result);
})

// 关闭连接
con.end()
  1. 坑来了
// 运行
node index.js

// ✨有请咱们第一位坑闪亮登场✨
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support 
authentication protocol requested by server; consider upgrading MySQL client
  • 分析错误
    MYSQL8.0以上的版本Node还暂时不支持

    1. 版本问题
    解决: 可以去官网下载低版本的MySql
    1. 使用CMD连接
    解决:
     // 连接数据库
     mysql -u root -p
     Enter password: ****** // 输入自己的密码
     // 成功后输入
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';   // 123456是自己的新密码
    // 刷新权限
    FLUSH PRIVILEGES;
    

    对啦!!答应我一定!一定!一定!要改自己代码里的密码,要不然你还会看到这样的友好提示,别问我是咋知道的😭

    // 嘿,兄嘚~~
    Error: ER_ACCESS_DENIED_ERROR: Access denied for user  'root'@'localhost' (using password: YES)
    
私密马赛.jpg
终点来啦!!!
// 运行,你就会看到!!
node index.js
喜大乐奔啊兄弟们,谁懂一把辛酸泪.png
感谢感谢感谢这位兄台的倾囊相助啊,解决了俺的燃眉之急,大家多多支持【Node】使用Node.js连接数据库时报错客户端不支持服务器请求的身份验证协议_Genius-Sue的博客-CSDN博客
泪目.gif

未完待续...

诶.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,488评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,034评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,327评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,554评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,337评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,883评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,975评论 3 439
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,114评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,625评论 1 332
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,555评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,737评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,244评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,973评论 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,362评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,615评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,343评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,699评论 2 370

推荐阅读更多精彩内容