mysql with express query返回null

tct7dpnv  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(384)

我在服务器端使用express。代码如下:

// router
const database = require('../services/database-service');

router.get('/allreviews', function (req, res, next) {
    let reviewsSql =
        'select r.reviewId, r.username, r.time, r.reviewText, r.visit, ri.fileName ' +
        'from (select min(reviewImgId) as imgId, reviewId ' +
        'from ReviewImgs ' +
        'group by reviewId) img, Reviews r, ReviewImgs ri ' +
        'where img.imgId=ri.reviewImgId and ri.reviewId=r.reviewId;';

    database.query(reviewsSql, function (result) {
        console.log(result);   // NULL
        res.send(result);
    });
});

// database-service.js
const mysql=require('mysql');

module.exports = {
    query: function (sql, data, fn) {
        const connection = mysql.createConnection({
            host     : '127.0.0.1',
            user     : 'root',
            password : 'xxxxxxxxx',
            database : 'Movie',
            port:'3306'
        });

        connection.connect();

        connection.query(sql, data, function (error, result) {
            if (error){
                console.log(error);
                return;
            }

            fn(result);
        });

        connection.end();
    }
};

问题是查询结果总是空的。但是,我在mysql命令行中执行sql查询代码,结果是一个包含3行的集合,这正是我想要的。发生了什么事?

2j4z5cfb

2j4z5cfb1#

异步库的经典回调通常是 function(err, result) ,但你通过了 function (result) javascript不关心如何调用参数,回调将接收第一个参数的错误。所以 result 参数实际上包含 err 因为这是第一个论点 null 意味着没有错误。
所以只要改变 function (result)function(err, result)

dwthyt8l

dwthyt8l2#

试着这样做

// database-service.js
const mysql=require('mysql');

const connection = mysql.createConnection({
            host     : '127.0.0.1',
            user     : 'root',
            password : 'xxxxxxxxx',
            database : 'Movie',
            port:'3306'
        });

connection.connect();

module.exports = connection;

//执行查询

database.query(reviewsSql, function (err, result) {
        console.log(result);   // NULL
        res.send(result);
    });

相关问题