nodejs查sql数据并返回流程

  数据连接完成,剩下的就是前台的请求以及服务端接到请求后,对数据库的查询和结果数据的返回操作了。

  引入相关模块内容:

const app = require('../root-router/appRouter');
const mysqlConnection = require('../mysql/mysqlConnection');
const tableName = require('../mysql/tableName');

  一个是路由主模块,一个是mysql服务模块,还有一个是表名常量模块。

// get方法获取所有账号信息列表
app.get("/gg_account/list", function (req, res) {
    console.log("请求url:", req.path, "请求参数:", req.query);
    // 查询相应数据表,返回数据
    const data = mysqlConnection.selectData(tableName.GG_ACCOUNT_INFO);
    res.send({code: 200, message: "get gg_account list success", data: data});
});

  这时就可以调用mysql服务模块进行相应表的查询了,本以为应该查到之后返回数据然后向前端返回数据的,结果是我想多了,底层直接报错,然后就一步一步打断点,发现query语句查出来返回的结果居然是空数组:

复制代码
/**
 * 查询语句
 * @param { string } tableName 表名
 */
function selectData(tableName) {
    const sql = 'select * from ' + tableName;
    const list = [];
    connection.query(sql, (err, rows, fields) => {
        if (err) {
            console.log('[query] - :' + err);
            return;
        }
        list = rows;
        console.log('The solution is: ', rows);
    });
    return list;
}
复制代码

  node主要使用的stream(流),这样当然抓不到数据了。后来找了半天,发现方向是错的,应该在查到之后直接抛出,于是修改了下查询方法:

复制代码
/**
 * 查询语句
 * @param { string } tableName 表名
 * @param { Function } sucCallback 成功的回调方法
 * @param { Function } errCallback 失败的回调方法
 */
function selectData(tableName, sucCallback, errCallback) {
    const sql = 'select * from ' + tableName;
    connection.query(sql, (error, results, fields)=> {
        if (error) {
            errCallback(error);
            return;
        }
        sucCallback(results);
    });
}
复制代码

  然后调用出也修改了一下:

复制代码
// get方法获取所有账号信息列表
app.get("/gg_account/list", function (req, res) {
    console.log("请求url:", req.path, "请求参数:", req.query);
    // 查询相应数据表,返回数据
    mysqlConnection.selectData(tableName.GG_ACCOUNT_INFO, (suc) => {
        res.send({code: 200, message: "Success!", data: suc, total: suc.length});
    }, (err) => {
        res.send({code: 500, message: "Error!", data: err});
    });
});
复制代码

  至此,前台到后台的一次请求终于成功走通!/鼓掌~

posted @   名字不好起啊  阅读(6404)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示