MySQL与快速查询返回空

时间:2018-11-16 12:02:34

标签: mysql node.js express

我在服务器端使用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行的集合,这正是我想要的。那是怎么回事?

2 个答案:

答案 0 :(得分:0)

尝试执行此操作

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

答案 1 :(得分:0)

异步库的

经典回调通常以function(err, result)的形式出现,但您传递function (result)

JavaScript不在乎如何调用参数,回调将收到错误es第一个参数。因此result参数实际上包含err,因为它是第一个参数,而null表示没有错误。

所以只需将function (result)更改为function(err, result)