日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将js进行到底:node学习10

發布時間:2025/3/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将js进行到底:node学习10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

node.js數據庫篇——MySQL

NoSQL大行其道的如今,MySQL這樣的關系型數據庫依然有著不可撼動的位置,對于中型,大型面向對象的項目,關系型數據庫依然是首選,真正的項目,應當是將數據庫的任務分離給專門的數據庫工程師去完成。

本回介紹使用node.js連接mysql數據庫,基于前面的express框架構建簡單的購物車example。

node.js的MySQL驅動

數據庫驅動是語言連接數據庫的必備庫,node.js連接mysql的基本驅動叫做“node-mysql”,另外node npm社區也提供了MySQL ORM的數據庫驅動,就類似于上一回中的mongoose,基于模型映射的操作方式,叫做“node-sequelize”,性能相對于原生驅動肯定要差不少。

package.json

{"name":"shopcart","version":"0.0.1","description":"a shopcart example powered by express and mysql","dependencies":{"express":"latest","mysql":"latest","sequelize":"latest","jade":"latest"} }

測試連接

直接采用官方提供的連接示例:

var mysql = require('mysql');//創建并配置連接參數 var connection = mysql.createConnection({host : 'localhost',user : 'root',password : '',database : 'cslg' });//連接 connection.connect();//測試查詢語句,使用query輸入SQL語句 connection.query('SELECT * from teacher_base_info limit 10', function (error, results, fields) {if (error) throw error;console.log(results); });//斷開連接 connection.end();

讀取成功

實踐——購物車實現

需求分析

算了算,大概需要如下幾個基本功能

  • /:展示所有商品以及添加商品的表單
  • /projects(POST):創建項目
  • /delete/:id(DELETE):刪除項目
  • /project:/:id(GET):展示某個商品詳情

為了示例簡單,只做這幾個功能罷了

創建數據庫

使用phpmyadmin或者手動創建一個庫,一張表

數據庫叫:shopcart
表名:items

數據庫配置文件

在開發項目時,應該將數據庫賬號密碼的配置文件單獨放在配置文件中,所以在項目目錄下先新建dbconfig.json,使用json是因為js方便讀取。

dbconfig.json

{"host" : "localhost","user" : "root","password" : "","database" : "shopcart" }

server.js

var mysql = require('mysql');//引入mysql驅動 var dbconfig = require("./dbconfig.json");//引入數據庫配置文件 var express = require("express") var bodyParser = require('body-parser'); var app = express(); var connection = mysql.createConnection(dbconfig);//express框架基本配置 app.use(bodyParser.urlencoded({ extended: true })); //對post請求表單提交的數據編碼,否則服務器端無法獲得app.set("view engine","jade"); app.set("views",__dirname+"/views");connection.connect(); //主頁 app.get("/",function(req,res){connection.query('SELECT * from items', function(err, data, fields) {if(err) throw err;res.render("index",{items:data});}); })//刪除一件商品 app.get("/delete/:id",function(req,res){var id = req.params.id;connection.query("delete from items where id=?",id,function(err,data,fields){//affectedRows可查看刪除行數console.log(data.affectedRows);res.redirect("/");}); });//插入一件商品 app.post("/projects",function(req,res){console.log(req.body);connection.query("insert into items SET ?",req.body,function(err, data, fields){if(err) throw err;//insertId可查看插入行的主鍵id編號console.log(data.insertId);res.redirect("/");}); });app.listen(3000);

分析套路

事實上在使用后我發現node-mysql模塊使用十分簡單:

  • 引入mysql模塊,createConnection創建連接,傳入配置文件json
  • 在請求代碼前就連接上mysql,不要將connect放到get,post中,最后也不用關閉
  • 使用query操作數據庫,第一個參數為數據庫語句,可以使用“?”為占位符,第二個參數為替代占位符的對象,或者單一變量
  • 最后一個參數為回調函數,其中第二個參數是數據庫返回的結果

從頭到尾只使用一個query方法,傳入數據庫語句,回調函數獲取數據即可,非常簡單

前端文件

layout.jade

doctype html htmlheadtitle My shopping cartbodyh1 My shopping cart#cart block body

index.jade

extends layout block bodyh2 所有商品if(items.length)uleach item in itemslih3: a(href="/project/#{item.id}")=item.titlep=item.descriptionspan: a(href="/delete/#{item.id}") 刪除elsep 沒有任何商品h2 創建新的商品form(action="/projects",method="POST")plabel 標題input(type="text",name="title")plabel 詳情textarea(name="description")pbutton 提交

轉載于:https://www.cnblogs.com/devilyouwei/p/8478810.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的将js进行到底:node学习10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。