node.js连接mysql数据库,封装成api。

导语:

我们在写后台程序的时候,总要把一些数据写入到数据库中,所以合理的数据库函数调用是很有必要的,本文就写一写用node连接数据库,并且封装成函数。

1,创建文件conf,在其里面创建db.js,用于存放数据库的账号还有密码。

//根据开发或者生产模式来选择数据库
const env = process.env.NODE_ENV

let MYSQL_CONF
let REDIS_CONF

if (env === 'dev') {
    
    
  MYSQL_CONF = {
    
    
    host: 'localhost',
    user: 'root',
    password: 'xiaomizhou123',
    port: '3306',
    database: 'mydb'
  }

  //redis_conf
  REDIS_CONF = {
    
    
    port: 6379,
    host: '127.0.0.1'
  }
}

if (env === 'production') {
    
    
  //mysql
  MYSQL_CONF = {
    
    
    host: '172.**.**.**',
    user: 'root',
    password: 'xiaomizhou123',
    port: '3306',
    database: 'mydb'
  }

  //redis_conf
  REDIS_CONF = {
    
    
    port: 6379,
    host: '172.**.**.**'
  }
}

module.exports = {
    
    
  MYSQL_CONF,
  REDIS_CONF
}

2,创建db文件夹,下面创建mysql.js,用于编写数据库统一执行函数。

const mysql = require('mysql')
const {
    
     MYSQL_CONF } = require('../conf/db')

// 创建链接对象
const con = mysql.createConnection(MYSQL_CONF)

// 开始链接
con.connect()

// 统一执行 sql 的函数
function exec(sql) {
    
    
    const promise = new Promise((resolve, reject) => {
    
    
        con.query(sql, (err, result) => {
    
    
            if (err) {
    
    
                reject(err)
                return
            }
            resolve(result)
        })
    })
    return promise
}

module.exports = {
    
    
    exec,
    escape: mysql.escape
}

3,创建controller文件夹,下面创建user.js,编写sql拼接函数,用于生成完整的sql语句。

const {
    
     exec, escape } = require('../db/mysql')
const {
    
     genPassword } = require('../utils/cryp')
//登陆
const login = async (username, password) => {
    
    
    username = escape(username)

    // 生成加密密码
    password = genPassword(password)
    password = escape(password)
    console.log(password)
    const sql = `
        select username, realname, avatar from users where username=${
      
      username} and passworded=${
      
      password}
    `
    const rows = await exec(sql)
    return rows[0] || {
    
    }
}
module.exports = {
    
    
    login
}

补充
在这里插入图片描述
微信搜索【web小馆】,回复全栈博客项目,即可获取项目源码和后续的实战文章教程。每天用最简单朴实的语言,潜移默化的提升你的计算机基础知识和前端技术。小米粥,一个专注的web全栈工程师,我们下期再见!

在这里插入图片描述
node后台

猜你喜欢

转载自blog.csdn.net/gitchatxiaomi/article/details/108931771