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

  至此,前台到后台的一次請求終於成功走通!/鼓掌~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM