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