美文网首页
重识(拾)Node

重识(拾)Node

作者: 羊驼驼驼驼 | 来源:发表于2023-08-11 19:42 被阅读0次
是谁在敲打我窗😯,是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

相关文章

  • 重识 Node

    对于前端而言,虽然不是人人都要拿 Node 写一个服务器程序,但简单可至使用命令交互模式调试 JS 代码片段,复杂...

  • 重识iOS之Property

    重识iOS之Property 重识iOS之Property

  • 重识

    输入,我是王婷。发送…… 她后悔了。 男主叫平安,姓江,是的,意思是将来会平安。女主叫王婷。俩人5岁就认识了...

  • 重识

    想和你重新认识傩次 从你叫什么名字说起

  • 重识

    “天空,天是空的”。这句诗让我激动不已。他太特别,几乎要颠覆我所有在课堂里学到得的知识和概念。天是空的!正...

  • 重识Activity-Activity任务栈和启动模式

    本篇文章是《重识Activity》系列的第4篇。 下面是《重识Activity》系列的其他文章: 第1篇:重识Ac...

  • Runtime好文

    重识 Objective-C Runtime - Smalltalk 与 C 的融合重识 Objective-C ...

  • 重识通识教育

    什么是通识教育?有人说就是语文、数学等基本素质教育,区别于工程、医学、法律、商业等具体技能培养的一种博雅教育。 通...

  • 重♥拾

    敷着最贵的面膜 熬着最晚的夜…… 在那些个自己独撑过程的日子里 终于学会了不会在人前矫情 以求宽慰……

  • 重·拾

    收拾房间, 翻出来那许久未碰已经遗忘了的尤克里里, 袋子上已经蒙了一层灰尘, 我弹了弹那灰尘, 打开了。 一时兴起...

网友评论

      本文标题:重识(拾)Node

      本文链接:https://www.haomeiwen.com/subject/qvutmdtx.html