Node.js写接口连接MySQL数据库

1.新建app.js粘贴以下代码

2.npm init 初始化

3.npm i 安装依赖

4.npm i mysql

5.npm i express

  1. node app.js 启动接口
javascript 复制代码
const express = require('express')
const mysql = require('mysql')
const bodyParser = require('body-parser')
const app = express()
const port = 3006
const jsonParser = bodyParser.json()
const urlencodedParser = bodyParser.urlencoded({ extended: false })
app.use(urlencodedParser)
app.use(jsonParser)


// 创建数据库链接
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'mall'
})

connection.connect()

//设置跨域访问
app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT,DELETE");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    next();
});

//好物秒杀电梯导航
app.get('/elevator', (req, res) => {
    connection.query(`select * from index_all limit 0,168;`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 加入购物车
app.post('/collect', (req, res) => {
    const user_id = req.body.userId
    const id = req.body.id
    const count = req.body.count
    connection.query(`insert into t_collections (user_id, commodity_id,count) values (${user_id},${id},${count});`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    });
})

// 更新购物车数量
app.get('/updataNum', (req, res) => {
    const userId = req.query.userId
    const commodity_id = req.query.commodity_id
    connection.query(`SELECT * FROM t_collections, index_all where t_collections.commodity_id = index_all.id and user_id = ${userId} and commodity_id = ${commodity_id}`, function (err, rows, fields) {
        if (rows.length != 0) {
            res.send({
                status: 200
            })
        } else {
            res.send({
                status: 666
            })
        }
    })
})

// 我的购物车
app.get('/car', (req, res) => {
    const id = req.query.id
    connection.query(`SELECT * FROM t_collections,index_all where t_collections.commodity_id=index_all.id and user_id=${id}`, function (err, rows, fields) {
        console.log(rows)
        res.send({
            data: rows
        })
    })
})

// 查询注册的手机号
app.get("/seePhone", (req, res) => {
    const telnumber = req.query.telnumber
    connection.query(`SELECT * FROM t_users where telnumber=${telnumber};`, function (err, rows, fields) {
        console.log(rows)
        if (rows.length == 0) {
            res.send({
                status: 200
            })
        } else {
            res.send({
                status: 666
            })
        }
    })
})

// 查询购物车
app.get("/seeCar", (req, res) => {
    const user_id = req.query.user_id
    const commodity_id = req.query.commodity_id
    console.log(777, user_id, commodity_id)
    // const count = req.query.count
    connection.query(`SELECT count FROM t_collections where t_collections.commodity_id=${commodity_id} and user_id=${user_id};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 修改购物车
app.put("/reviseCar", (req, res) => {
    const user_id = req.body.user_id
    const commodity_id = req.body.commodity_id
    const count = req.body.count
    connection.query(`update t_collections set count=${count} where commodity_id=${commodity_id} and user_id=${user_id};`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    })
})

// 添加购物车
app.get("/addCart", (req, res) => {
    const user_id = req.query.user_id
    const commodity_id = req.query.commodity_id
    const count = req.query.count
    connection.query(`insert into t_collections (commodity_id,user_id,count) values (${commodity_id}, ${user_id},${count});`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    })
})

// 购物车 增加/删减 商品数量
app.put("/changeMount", (req, res) => {
    const user_id = req.body.user_id
    const commodity_id = req.body.commodity_id
    const count = req.body.count
    connection.query(`update t_collections set count=${count} where commodity_id=${commodity_id} and user_id=${user_id};`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    })
})

//删除商品
app.delete('/del', (req, res) => {
    const user_id = req.query.user_id
    const commodity_id = req.query.commodity_id
    connection.query(`delete from t_collections where user_id=${user_id} and commodity_id=${commodity_id};`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    })
})

//首页底部数据
app.get('/index', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_index limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//ole大牌精选数据
app.get('/olee', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_ole limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})


// 所有数据接口
app.get('/all', (req, res) => {
    connection.query('select * from index_all', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 模糊搜索
app.get('/search', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    const txt = req.query.keyword
    connection.query(`select * from index_all  where title like "%${txt}%" limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 模糊搜索的所有商品
app.get('/allsearchh', (req, res) => {
    const txt = req.query.keyword
    connection.query(`select * from index_all where title like "%${txt}%";`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//登录接口
app.get('/login', (req, res) => {
    const admin = req.query.admin
    const psw = req.query.psw
    connection.query(`select * from t_users where telnumber='${admin}' and password='${psw}';`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//注册接口
app.post('/register', (req, res) => {
    console.log(req.body.telnumber)
    const telnumber = req.body.telnumber
    const psw = req.body.password
    connection.query(`insert into t_users (password,telnumber) values ('${psw}','${telnumber}');`, function (err, rows, fields) {
        res.send({
            status: 200
        })
    })
})

// 更多接口 
app.get('/more', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_more limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 百货接口 
app.get('/store', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_store limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 电器接口 
app.get('/appliances', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_appliances limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//男装接口 
app.get('/man', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_man limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 母婴接口 
app.get('/baby', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_baby limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 箱包接口 
app.get('/bag', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_bag limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 美妆接口 
app.get('/makeups', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_makeups limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 运动接口  
app.get('/sports', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_sports limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 女装接口 
app.get('/woman', (req, res) => {
    const mount = req.query.limit
    const page = req.query.page
    connection.query(`select * from index_woman limit ${(page - 1) * mount},${mount};`, function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 大牌精选接口
app.get('/good', (req, res) => {
    connection.query('select * from index_good', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 好物秒杀接口
app.get('/appliances', (req, res) => {
    connection.query('select * from index_appliances', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//疯狂折扣接口
app.get('/appliances', (req, res) => {
    connection.query('select * from index_appliances', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

//推荐接口
app.get('/appliances', (req, res) => {
    connection.query('select * from index_appliances', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

// 疯狂接口1~6
app.get('/crazy1', (req, res) => {
    connection.query('select * from crazy1', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})
app.get('/crazy2', (req, res) => {
    connection.query('select * from crazy2', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})
app.get('/crazy3', (req, res) => {
    connection.query('select * from crazy3', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})
app.get('/crazy4', (req, res) => {
    connection.query('select * from crazy4', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})
app.get('/crazy5', (req, res) => {
    connection.query('select * from crazy5', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})
app.get('/crazy6', (req, res) => {
    connection.query('select * from crazy6', function (err, rows, fields) {
        res.send({
            status: 200,
            data: rows
        })
    })
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})
相关推荐
江华森16 小时前
前端构建工具 Webpack 速览
前端·webpack·node.js
无情的西瓜皮17 小时前
MCP 协议实战:从零搭建一个 MCP 服务器(Node.js 版)
vue.js·人工智能·typescript·node.js
学习-学习21 小时前
Node.js 现在能直接跑 TypeScript 了?Type Stripping 原理、限制与 tsx / ts-node 取舍
typescript·node.js
霍格沃兹测试开发学社测试人社区21 小时前
Node.js 浏览器引擎 + Python 大脑:Playwright 混合架构爬虫系统深度解析
python·架构·node.js
小林ixn1 天前
Node.js 文件系统与路径处理:从 API 到工程化实战
node.js·编辑器·vim
iDao技术魔方2 天前
Node.js v26.5.0 深度解读:import Text、流式 ReadableStreamTee、以及隐藏的安全加固浪潮
安全·node.js
网络点点滴2 天前
Node.js中模块引用是如何真正运作的
node.js
BAIGAOa2 天前
还在手写 if-else 响应按键?我用 React-Ink 搭配键盘引擎解决了
node.js
Excel效率人2 天前
飞书自动回复机器人开发:@机器人自助查询物流信息
机器人·node.js·飞书
先吃饱再说3 天前
从“地狱”到“楼梯”再到“同步写法”:Node.js 异步的二十年与Node内置fs模块详解
node.js