node-koa封装查询函数

590 阅读1分钟

闲着没事封装一下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端口启用`);
})