重識(shí)(拾)Node

是誰(shuí)在敲打我窗??解恰,是Node.png
nvm

node版本管理工具,可以切換多個(gè)nodejs版本

  • 安裝

  • 使用

    • nvm list: 查看當(dāng)前所有node版本
    • nvm install v10.13.0: 安裝指定的版本
    • nvm uninstall : 卸載某個(gè)版本
    • nvm use --delete-prefix 10.13.0: 切換到指定版本
Http請(qǐng)求概述

DNS解析搂赋,建立TCP連接(3次握手??)闽寡,發(fā)送http請(qǐng)求
server端接收到http請(qǐng)求,處理碧浊,并返回
客戶端接收到返回?cái)?shù)據(jù)懦胞,處理數(shù)據(jù)(如渲染頁(yè)面)

常用的請(qǐng)求方式
  • GET
    客戶端向server端獲取數(shù)據(jù),通過(guò)querystring來(lái)傳遞數(shù)據(jù)梦碗,瀏覽器直接訪問(wèn)禽绪,發(fā)送get請(qǐng)求
const http = require('http')
const querystring = require('querystring')

const server = http.createServer((req, res) => {
  console.log('method:', req.method) // GET
  const url = req.url // 請(qǐng)求完整的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啦')
瀏覽器打開(kāi).png
  • POST

客戶端要向服務(wù)端傳遞數(shù)據(jù),通過(guò)post data傳遞數(shù)據(jù)洪规,使用postman或者apifox等工具模擬請(qǐng)求

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') // 在這里返回印屁,因?yàn)槭钱惒?        })
    }
})
server.listen(8000)
console.log('OK啦')
image.png
模擬.png
測(cè)試項(xiàng)目
  • 環(huán)境搭建
    1. nodemon監(jiān)聽(tīng)文件變化,自動(dòng)重啟node
    npm install --save nodemon
    
    1. cross-env - npm (npmjs.com)
      設(shè)置環(huán)境變化斩例,兼容mac linux 和 windows
    npm install --save cross-env
    
  • 環(huán)境配置
    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
     // 業(yè)務(wù)代碼
    const serverHandle = (req, res) => {
      // 設(shè)置返回格式為 JSON
      res.setHeader('Content-type', 'application/json')
    }
    module.exports = serverHandle
    
  • MySql
    1. 介紹

      • web server 中最流行的關(guān)系型數(shù)據(jù)庫(kù)
      • 官網(wǎng)可免費(fèi)下載雄人,學(xué)習(xí)
      • 輕量級(jí),易學(xué)易用
    2. 安裝
      注:執(zhí)行過(guò)程中需要輸入root用戶名的密碼念赶,要記住這個(gè)密碼

    3. 可視化工具
      mysql workbench 操作mysql的客戶端础钠,可視化操作,下載叉谜,
      當(dāng)然還有我們的小貓爪Navicat大家自行下載哈~

    4. 操作數(shù)據(jù)庫(kù)

    • 建庫(kù)-舉個(gè)??????


      blog.png
    • 建表-舉個(gè)??????


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

    增:sql語(yǔ)句前面加-- 表示注釋當(dāng)前查詢
      // 增:password是mysql的關(guān)鍵字需要加``轉(zhuǎn)成普通的字段名
    insert into user(username, `password`, 'realname')values("zhangsan","123","張三");
    
    delete from user where username='lisi';
    

    ?? 通過(guò)做標(biāo)記的方式刪除


    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í)行會(huì)報(bào)錯(cuò)提示正在運(yùn)行安全模式

update user set realname='張三6' where username='zhangsan';  //    
報(bào)錯(cuò)啦.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進(jìn)行正序排列 desc倒序排列
  • NodeJs 操作mysql
  1. 下載
npm install --save mysql
  1. index.js
const mysql = require('mysql')

// 創(chuàng)建連接對(duì)象
const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'myblog'
})

// 開(kāi)始連接
con.connect()

// 執(zhí)行 sql 語(yǔ)句
const sql = 'select * from user;'
con.query(sql, (err, result) => {
    if(err) {
        console.error(err);
    }
    console.log(result);
})

// 關(guān)閉連接
con.end()
  1. 坑來(lái)了
// 運(yùn)行
node index.js

// ?有請(qǐng)?jiān)蹅兊谝晃豢娱W亮登場(chǎng)?
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support 
authentication protocol requested by server; consider upgrading MySQL client
  • 分析錯(cuò)誤
    MYSQL8.0以上的版本Node還暫時(shí)不支持

    1. 版本問(wèn)題
    解決: 可以去官網(wǎng)下載低版本的MySql
    1. 使用CMD連接
    解決:
     // 連接數(shù)據(jù)庫(kù)
     mysql -u root -p
     Enter password: ****** // 輸入自己的密碼
     // 成功后輸入
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';   // 123456是自己的新密碼
    // 刷新權(quán)限
    FLUSH PRIVILEGES;
    

    對(duì)啦F煊酢!答應(yīng)我一定停局!一定很钓!一定!要改自己代碼里的密碼董栽,要不然你還會(huì)看到這樣的友好提示码倦,別問(wèn)我是咋知道的??

    // 嘿,兄嘚~~
    Error: ER_ACCESS_DENIED_ERROR: Access denied for user  'root'@'localhost' (using password: YES)
    
私密馬賽.jpg
終點(diǎn)來(lái)啦6肌T!
// 運(yùn)行擒抛,你就會(huì)看到M破!
node index.js
喜大樂(lè)奔啊兄弟們歧沪,誰(shuí)懂一把辛酸淚.png
感謝感謝感謝這位兄臺(tái)的傾囊相助啊民泵,解決了俺的燃眉之急,大家多多支持【Node】使用Node.js連接數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)客戶端不支持服務(wù)器請(qǐng)求的身份驗(yàn)證協(xié)議_Genius-Sue的博客-CSDN博客
淚目.gif

未完待續(xù)...

誒.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末槽畔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胁编,更是在濱河造成了極大的恐慌厢钧,老刑警劉巖鳞尔,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異早直,居然都是意外死亡寥假,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門霞扬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)糕韧,“玉大人,你說(shuō)我怎么就攤上這事喻圃∮┎剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵斧拍,是天一觀的道長(zhǎng)雀扶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)肆汹,這世上最難降的妖魔是什么愚墓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮昂勉,結(jié)果婚禮上浪册,老公的妹妹穿的比我還像新娘。我一直安慰自己岗照,他們只是感情好村象,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谴返,像睡著了一般煞肾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗓袱,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天籍救,我揣著相機(jī)與錄音,去河邊找鬼渠抹。 笑死蝙昙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梧却。 我是一名探鬼主播奇颠,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼放航!你這毒婦竟也來(lái)了烈拒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荆几,沒(méi)想到半個(gè)月后吓妆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吨铸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年行拢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诞吱。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舟奠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出房维,到底是詐尸還是另有隱情沼瘫,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布握巢,位于F島的核電站晕鹊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏暴浦。R本人自食惡果不足惜溅话,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歌焦。 院中可真熱鬧飞几,春花似錦、人聲如沸独撇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纷铣。三九已至卵史,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搜立,已是汗流浹背以躯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啄踊,地道東北人忧设。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像颠通,于是被迫代替她去往敵國(guó)和親址晕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容