上一篇:使用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 resulttry {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 resulttry {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")
})