
是誰在敲打我窗??,是Node.png
nvm
node版本管理工具,可以切換多個nodejs版本
-
安裝
- mac os Homebrew
// 安裝brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" // 安裝nvm brew install nvm - windows nvm-windows
下載地址:https://github.com/coreybutler/nvm/releases
- mac os Homebrew
-
使用
-
nvm list: 查看當前所有node版本 -
nvm install v10.13.0: 安裝指定的版本 -
nvm uninstall: 卸載某個版本 -
nvm use --delete-prefix 10.13.0: 切換到指定版本
-
Http請求概述
DNS解析,建立TCP連接(3次握手??),發(fā)送http請求
server端接收到http請求,處理,并返回
客戶端接收到返回數(shù)據(jù),處理數(shù)據(jù)(如渲染頁面)
常用的請求方式
-
GET
客戶端向server端獲取數(shù)據(jù),通過querystring來傳遞數(shù)據(jù),瀏覽器直接訪問,發(fā)送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
客戶端要向服務端傳遞數(shù)據(jù),通過post data傳遞數(shù)據(jù),使用postman或者apifox等工具模擬請求
const http = require('http')
const server = http.createServer((req, res) => {
if(req.method === 'POST') {
// 數(shù)據(jù)格式
console.log('content-type', req.headers['content-type'])
// 接收數(shù)據(jù)
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
測試項目
-
環(huán)境搭建
- nodemon監(jiān)聽文件變化,自動重啟node
npm install --save nodemon-
cross-env - npm (npmjs.com)
設置環(huán)境變化,兼容mac linux 和 windows
npm install --save cross-env -
環(huán)境配置
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" }bin/www.js
// server const http = require('http') const PORT = 8000 const serverHandle = require('../app') const server = http.createServer(serverHandle) server.listen(PORT)app.js
// 業(yè)務代碼 const serverHandle = (req, res) => { // 設置返回格式為 JSON res.setHeader('Content-type', 'application/json') } module.exports = serverHandle -
MySql
-
介紹
- web server 中最流行的關系型數(shù)據(jù)庫
- 官網可免費下載,學習
- 輕量級,易學易用
安裝
注:執(zhí)行過程中需要輸入root用戶名的密碼,要記住這個密碼可視化工具
mysql workbench操作mysql的客戶端,可視化操作,下載,
當然還有我們的小貓爪Navicat大家自行下載哈~操作數(shù)據(jù)庫
-
建庫-舉個??????
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的數(shù)據(jù)
select * from users where status <> 0

軟刪除.png
改
?? 直接執(zhí)行會報錯提示正在運行安全模式
update user set realname='張三6' where username='zhangsan'; //

報錯啦.png
?? 解決辦法
// 執(zhí)行成功后這條命令可以刪掉啦
SET SQL_SAFE_UPDATES = 0;
?? 再次執(zhí)行更新命令

成功啦.png
查
select * from user; // 整張表
select id,username from user; // 根據(jù)列查詢
select * from user where username='zhangsan' and `password` = '123'; // 根據(jù)條件查詢and-且or-或
select * from user where username like '%zhang%'; // 模糊查詢
select * from user where password like '%1%' order by id; // 按照id進行正序排列 desc倒序排列
-
NodeJs 操作mysql
- 下載
npm install --save mysql
- index.js
const mysql = require('mysql')
// 創(chuàng)建連接對象
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'test',
database: 'myblog'
})
// 開始連接
con.connect()
// 執(zhí)行 sql 語句
const sql = 'select * from user;'
con.query(sql, (err, result) => {
if(err) {
console.error(err);
}
console.log(result);
})
// 關閉連接
con.end()
- 坑來了
// 運行
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還暫時不支持- 版本問題
解決: 可以去官網下載低版本的MySql
- 使用CMD連接
解決:
// 連接數(shù)據(jù)庫 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
終點來啦!?。?/h5>
// 運行,你就會看到??!
node index.js
喜大樂奔啊兄弟們,誰懂一把辛酸淚.png
感謝感謝感謝這位兄臺的傾囊相助啊,解決了俺的燃眉之急,大家多多支持【Node】使用Node.js連接數(shù)據(jù)庫時報錯客戶端不支持服務器請求的身份驗證協(xié)議_Genius-Sue的博客-CSDN博客
淚目.gif
// 運行,你就會看到??!
node index.js

喜大樂奔啊兄弟們,誰懂一把辛酸淚.png

淚目.gif
未完待續(xù)...

誒.png


