vue中利用nodejs连接数据库

本文介绍了如何在Node.js环境中使用MySQL数据库,通过Express框架构建一个API接口,展示如何导入数据库模块、执行SQL查询、处理错误并解决跨域问题。示例代码包括了查询用户信息的get请求处理和错误统一返回格式。
摘要由CSDN通过智能技术生成

环境准备:
1、Nodejs环境 (我的node版本v20.11.0 npm 版本:v9.8.1)
项目结构:
有用的就几个文件,圈出来了
在这里插入图片描述
代码如下:
user.js

let db = require('../db/index')

exports.get = (req, res) => {
    console.log(db)
    var sql = 'select * from app_userinfo'
    db.query(sql, (err, data) => {
        if(err) {
            return res.send('错误:' + err.message)
        }
        res.send(data)
    })
}

db文件夹下的demo.js

let mysql = require('mysql')

// let db = mysql.createPool({
//     host: '127.0.0.1',     //数据库IP地址
//     user: 'root',          //数据库登录账号
//     password: '111111',      //数据库登录密码
//     database: 'djanjo'       //要操作的数据库
// })

// module.exports = db
const con =mysql.createConnection({
 
    host:'localhost',
   
    user: 'root',
   
    password: '123456',
   
    port: '3306',
   
    database: 'djanjo'
   
  })
  
con.connect()
 
 
 
// 执行sql语句
 
const sql = 'select * from app_userinfo;'
 
con.query(sql, (err, res) => {
 
  if(err) {
 
    console.log(err)
 
    return
 
  }
 
  console.log(res)
 
})
 
 
 
//关闭连接
 
con.end()

de文件夹下的index.js

const mysql = require('mysql')

// 连接池配置信息
const pool = mysql.createPool({
    connectionLimit: 10, // 连接池最大连接数
    host: 'localhost',
    user: 'root',
    password: '123456',
    port: '3306',
    database: 'djanjo'
})

function conMysql(sql) {
    return new Promise((resolve, reject) => {
        // 从连接池中获取连接
        pool.getConnection(function (err, connection) {
            if (err) {
                reject(err)
                return
            }
            // 使用连接执行查询操作
            connection.query(sql, (err, result) => {
                // 释放连接
                connection.release()
                if (err) {
                    reject(err)
                    return
                }
                let res = JSON.parse(JSON.stringify(result))
                resolve(res)
            })
        })
    })
}

// 导出 conMysql 函数
module.exports = {
    conMysql
}

app.js

const express = require('express')
const app = express()

const cors = require('cors') //解决跨域问题
app.use(cors())

const bodyParser = require('body-parser')
const multiparty = require('connect-multiparty')
// 处理 x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }))
// 处理 mutipart/form-data
app.use(multiparty())
// 处理 application/json
app.use(bodyParser.json())
// 导入连接数据库的函数
const { conMysql } = require('./db/index')
// 创建统一的返回报文对象
class Response {
    constructor(isSucceed, msg, code, data) {
        this.isSucceed = isSucceed;
        this.msg = msg;
        this.code = code;
        this.data = data;
    }
}

// 一个简单的测试接口
app.get('/test', (req, res) => {
    res.send('测试用的接口')
})

// 一个简单的接口,查询数据库中的信息
app.get('/getUser', (req, res) => {
    let sql = 'select * from app_userinfo'
    conMysql(sql).then(result => {
        res.send(result)
    }).catch(error => {
        console.error('查询数据库失败:', error)
        res.status(500).send(new Response(false, '查询数据库失败', 500, null))
    })
})

// 监听node服务器的端口号
app.listen(3000, () => {
    console.log('恭喜你,服务器启动成功')
})

然后进入appjs路径下,运行node app.js
在这里插入图片描述
获取数据成功
在这里插入图片描述
项目资料滴滴私信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java学习使我快乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值