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

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

  • 相关阅读:
    web3g163(网易)邮箱和博客数据架构设计
    webQQ(腾讯)EmailTMessage(腾讯微博记事本)
    ASP.net MVC 4 中Security.FormsAuthentication验证用户的状态(匿名|已登录)
    ASP.net:查找框设默认
    webQQ(腾讯)EMailQQMsg(仿QQ短信)数据库设计
    webQQ(腾讯)QZone仿QQ投票和测试程序数据库设计
    ASP.NET MVC 3 RTM
    【技术贴】Eclipse||Myeclipse tab缩进转换为空格教程
    【技术贴】解决Eclipse启动不了,一闪而过的问题
    【技术贴】解决U盘无法复制:磁盘被写保护,请去掉写保护或使用另一张磁盘。
  • 原文地址:https://www.cnblogs.com/guofan/p/9888894.html
Copyright © 2011-2022 走看看