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});
        });
    });

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

  • 相关阅读:
    【07】关于相等 Equals
    【06】拆箱、装箱
    【05】CTS、CLS、CLR
    判断属性存在于原型而非对象的方法
    Javascript打印网页局部的实现方案
    Jquery获取DOM绑定事件
    Bug 级别定义标准
    JavaScript中的数据类型
    <script>元素在XHTML中的用法
    CSS深入理解学习笔记之float
  • 原文地址:https://www.cnblogs.com/guofan/p/9888894.html
Copyright © 2011-2022 走看看