vue -nodej连接数据库(使用 navicat可视化)

223 阅读2分钟

node 服务器

新建文件夹, 起名为 node-server , 新建文件 app.js , 在终端中初始化项目

npm init 
npm i
npm i --save express
npm i --save cors //解决跨域问题

app.js

// 导入 express
const express = require('express')
// 创建 app
const app = express()
// 设置跨域访问
const cors = require('cors')
app.use(cors())
// 处理POST参数
const bodyParser = require('body-parser')
const multiparty = require('connect-multiparty')
// 处理 x-www-form-urlencoded
app.use(bodyParser.urlencoded({
  extended:true
}));
// 处理 application/json
app.use(bodyParser.json())
// 处理 mutipart/form-data
app.use(multiparty())
// 测试接口能否正常调用
app.get('/info', (req, res) => {
  res.send("Hello shaoyahu !")
})
// 启动
app.listen(3000, () => {
  console.log('express server running at http://127.0.0.1:' + 3000);
})

MYSQL

一、安装依赖

npm install mysql --save

mysql.js 二、数据库配置并连接

let mysql = require('mysql')
//mysql数据库配置  
const db_config = {
  host: 'localhost',
  user: '请输入你自己的账号, 一般为 root',
  password: '请输入你自己的密码, 一般也为 root',
  port: "3306",// 默认使用3306端口号
  database: 'node_app'// 使用你自己创建的数据库名称,我这里使用 node_app
  //连接池
  connectionLimit: 50,  //连接池允许创建的最大连接数,默认值为10 
  queueLimit: 0  //允许挂起的最大连接数,默认值为0,代表挂起的连接数无限制
}
// 进行数据库交互
function conMysql(sql) {
  let connect = mysql.createConnection(db_config)
  // 开始链接数据库
  connect.connect(function (err) {
    if (err) {
      console.log(`mysql连接失败: ${err}!`)
    } else {
      console.log('mysql连接成功!')
    }
  })
  // 返回一个Promise承诺对象
  return new Promise((resolve, reject) => {
    connect.query(sql, (err, result) => {
      if (err) {
        reject(err)
      } else {
        // 此处需要将返回数据转为JSON再转回来,否则原数据不为任何数据类型
        let res = JSON.parse(JSON.stringify(result))
        closeMysql(connect)
        resolve(res)
      }
    });
  })
}
// 查询成功后关闭mysql
function closeMysql(connect) {
  connect.end((err) => {
    if (err) {
      console.log(`mysql关闭失败:${err}!`)
    } else {
      console.log('mysql关闭成功!')
    }
  })
}
// 导出方法
exports.conMysql = conMysql

navicat

navicat新建一张表 userinfo

截屏2022-10-11 11.00.33.png

最后

app.js

let { conMysql } = require('./mysql')
// 获取全部用户信息,测试数据库连接的上不上
app.get('/getUser', (req, res) => {
  let sql = 'select * from userinfo'
  conMysql(sql).then(result => {
    res.send(result)
  })
})

tip

MySQL的数据库连接方式有以下几种:

  • mysql.createConnection() 每次请求建立一个连接

  • mysql.createPool() 创建连接池,从连接池中获取连接

  • mysql.createPoolCluster() 创建连接池集群,连接池集群可以提供多个主机连接

mysqljs文档中推荐使用第一种方式:每次请求建立一个连接,但是由于频繁的建立、关闭数据库连接,会极大的降低系统的性能,所以我选择了使用连接池的方式,如果对性能有更高的要求,安装了MySQL 集群,可以选择使用连接池集群。

注意

远程连接数据库 出现 Client does not support authentication protocol requested by server的解决方法:

  1. 通过命令行进入解压的mysql根目录下。
  2. 登陆数据库 
    mysql -uroot -p
  3. 输入root的密码 
    Enter password: ******
  4. 更改加密方式(原样拷贝到命令窗中) 
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
  5. 更改密码:该例子中 123456为新密码 
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
  6. 刷新: 
    ``
  7. mysql> FLUSH PRIVILEGES;