导语:
我们在写后台程序的时候,总要把一些数据写入到数据库中,所以合理的数据库函数调用是很有必要的,本文就写一写用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 = {
port
: 6379,
host
: '127.0.0.1'
}
}
if (env
=== 'production') {
MYSQL_CONF = {
host
: '172.**.**.**',
user
: 'root',
password
: 'xiaomizhou123',
port
: '3306',
database
: 'mydb'
}
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()
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全栈工程师,我们下期再见!