zoukankan      html  css  js  c++  java
  • 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});
        });
    });

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

  • 相关阅读:
    Linux 共享库
    使用Visual Studio(VS)开发Qt程序代码提示功能的实现(转)
    ZOJ 3469 Food Delivery(区间DP)
    POJ 2955 Brackets (区间DP)
    HDU 3555 Bomb(数位DP)
    HDU 2089 不要62(数位DP)
    UESTC 1307 windy数(数位DP)
    HDU 4352 XHXJ's LIS(数位DP)
    POJ 3252 Round Numbers(数位DP)
    HDU 2476 String painter (区间DP)
  • 原文地址:https://www.cnblogs.com/guofan/p/9888894.html
Copyright © 2011-2022 走看看