我在服务器端使用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条答案
按热度按时间2j4z5cfb1#
异步库的经典回调通常是
function(err, result)
,但你通过了function (result)
javascript不关心如何调用参数,回调将接收第一个参数的错误。所以result
参数实际上包含err
因为这是第一个论点null
意味着没有错误。所以只要改变
function (result)
至function(err, result)
dwthyt8l2#
试着这样做
//执行查询