闲着没事封装一下node查询数据库的函数如果有更好的方式请留言,这个在开发中非常常见,大家可以留言讨论一下,如何使用更加方便智能,代码如何更加优化简短
1.普通查询
const pool=require("@/sql.js")
const queryData = (sql, values) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) {
reject(err);
return;
}
connection.query(sql, values, (error, results) => {
if (error) {
reject(error);
return;
}
connection.release();
resolve(results);
});
});
});
};
module.exports={
queryData
}
2.分页查询
const {queryData}=require("./opreatedb.js")
const getUsersByPageAndName = async (sql,page, pageSize, nameKeyword) => {
try {
const offset = (page - 1) * pageSize;
const searchKeyword = `%${nameKeyword}%`;
const values = [searchKeyword, offset, pageSize];
const users = await queryData(sql, values);
return users;
} catch (error) {
throw new Error('查询失败: ' + error.message);
}
};
module.exports = {
getUsersByPageAndName
};
3.使用
const router = require("@/routers/index.js")
const {
queryData
} = require("@/utils/opreatedb.js")
const {
getUsersByPageAndName
} = require("@/utils/searchPage.js")
//查询接口
router.get('/query', async (ctx) => {
const results = await queryData('SELECT * FROM emp');
ctx.body = results;
});
//分页查询接口
router.post('/query/page', async (ctx) => {
let sql = 'SELECT * FROM emp WHERE name LIKE ? ORDER BY id ASC LIMIT ?, ?';
const {
page,
pageSize,
name
} = ctx.request.body;
try {
const results = await getUsersByPageAndName(sql, page, pageSize, name);
ctx.body = results;
} catch (error) {
ctx.body = {
code: 400,
msg: error
}
}
});
module.exports = router;
4.入口函数
const Koa = require('koa');
const userRouter=require("./routers/user/index.js")
const bodyParser = require('koa-bodyparser');
const app = new Koa();
app.use(bodyParser());
app.use(userRouter.routes()).use(userRouter.allowedMethods());
const port = 3000;
app.listen(port, () => {
console.log(`3000端口启用`);
})