上一篇:使用express搭建服务器获取MySQL数据库数据
一、完善获取数据库数据的写法
async+await版本:
const express = require('express')
const db = require('./db/nodejs-orm/index.js')
const app = express()
app.get("/get_data", (req, res) => {
// 查询数据库,返回到浏览器
// 创建模型,需要操作哪个数据表
(async function get_data() {
let Stuinfo = db.model("stuinfo")
let result = await new Promise((resolve, reject)=> {
Stuinfo.find((err, data) => {
if(err){
reject(err)
}
resolve(data)
})
})
res.send(result)
})()
})
app.listen(3000, () => {
console.log("服务器已经启动,端口为:3000")
})
带捕获异常的版本:
const express = require('express')
const db = require('./db/nodejs-orm/index.js')
const app = express()
app.get("/get_data", (req, res) => {
// 查询数据库,返回到浏览器
// 创建模型,需要操作哪个数据表
(async function get_data() {
let Stuinfo = db.model("stuinfo")
let result
try {
result = await new Promise((resolve, reject)=> {
Stuinfo.find((err, data) => {
if(err){
reject(err)
}
resolve(data)
})
})
} catch (error) {
console.log(error)
res.send({errMsg:"数据库查询出错"})
return;
}
res.send(result)
})()
})
app.listen(3000, () => {
console.log("服务器已经启动,端口为:3000")
})
二、封装handleDB
handle.js:
const db = require('./nodejs-orm/index.js')
// res:请求对象
// tableName:需要进行查询操作的表名
// methodName:进行哪种操作(增删改查)
// errMsg:如果数据库操作出错,自定义返回什么样的错误信息
// n1:字符串或字典或列表
// n2:字符串或字典或列表
async function handleDB(res, tableName, methodName, errMsg, n1, n2) {
// console.log('handleDB方法执行')
let Model = db.model(tableName)
let result
try {
result = await new Promise((resolve, reject) => {
// Model.find("",(err, data) => {
// Model["find"]("",(err, data) => {
if(!n1) {
// 没有传递n1,即一个参数都没有传
Model[methodName]((err, data) => {
if (err) {
reject(err)
}
resolve(data)
})
return;
}
// 程序能够执行到这里,说明传递了n1参数
if(!n2) {
// 只传递了n1参数,没有传递n2参数
Model[methodName](n1,(err, data) => {
if (err) {
reject(err)
}
resolve(data)
})
return;
}
// 程序能够执行到这里,说明传递了n1,n2参数
Model[methodName](n1,n2,(err, data) => {
if (err) {
reject(err)
}
resolve(data)
})
})
} catch (error) {
console.log(error)
res.send({ errMsg: errMsg})
return;
}
return result
}
module.exports = handleDB
在项目中使用:
const express = require('express')
const handleDB = require('./db/handleDB.js')
const app = express()
app.get("/get_data", (req, res) => {
// 查询数据库,返回到浏览器
// 需要操作哪个数据表
// 什么操作: 增删改查这些方法名
(async function get_data() {
let result = await handleDB(res, "stuinfo", "update", "数据修改错误", "age= 22",{sex: '未知'})
res.send(result)
})()
})
app.listen(3000, () => {
console.log("服务器已经启动,端口为:3000")
})