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