我正在处理一个路由,返回一个数组,其中包含对数据库的两次单独调用的结果。我在模型函数中调用的函数单独按预期工作。但是,当我尝试通过在第一个回调中调用第二个函数来组合它时,我收到第二个函数“不是函数”的错误。这是我的列表路线中的代码。注意util和errorhandler是我创建的文件,用于帮助返回格式,不应该影响此错误。任何帮助解决这个问题将不胜感激,谢谢!
路线/清单
router.route("/list/:id").get(function(req, res) {
list.getListMovie(req.params.id, function(err, list) {
if (err) {
res.json(errorHandler.handleDatabaseErrors(err));
return;
}
var response = [];
response["movies"] = list;
console.log(response)
list.getListTV(req.params.id, function(err, list1) {
if (err) {
res.json(errorHandler.handleDatabaseErrors(err));
return;
}
response["tv"] = JSON.parse(list1);
console.log(response)
res.json(utils.returnFormatForDB(response));
});
});
});
models / list
中的函数定义exports.getListTV = function(userid, done) {
db.get().query('SELECT `idmedia`, `rating`, `title`, `poster_path` FROM
`list` JOIN `tv` ON list.idmedia = tv.tv_id WHERE list.idusers = ?', userid,
function(err, rows) {
if (err) return done(err);
done(null, rows);
});
}
exports.getListMovie = function(userid, done) {
db.get().query('SELECT `idmedia`, `rating`, `title`, `poster_path` FROM
`list` JOIN `movies` ON list.idmedia = movies.movie_id WHERE list.idusers =
?', userid, function(err, rows) {
if (err) return done(err);
done(null, rows);
});
}
编辑::我不确定将问题标记为已解决的正确方法,但是通过修复列表覆盖并使响应成为对象我能够使我的代码工作。谢谢你的帮助!
答案 0 :(得分:0)
您正在覆盖list
变量。试试
list.getListMovie(req.params.id, function(err, movieList) {
if (err) {
res.json(errorHandler.handleDatabaseErrors(err));
return;
}
var response = {};
response["movies"] = movieList;
console.log(response)
list.getListTV(req.params.id, function(err, tvList) {
if (err) {
res.json(errorHandler.handleDatabaseErrors(err));
return;
}
response["tv"] = JSON.parse(tvList);
console.log(response)
res.json(utils.returnFormatForDB(response));
});
});
另外,我很确定你希望response
变量是一个对象,而不是一个数组。