小言_互联网的博客

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

416人阅读  评论(0)

导语:

我们在写后台程序的时候,总要把一些数据写入到数据库中,所以合理的数据库函数调用是很有必要的,本文就写一写用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全栈工程师,我们下期再见!



转载:https://blog.csdn.net/gitchatxiaomi/article/details/108931771
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场