你好我卡在我的第一个回调“selectArticleByTitle(title,callback)”中,终端发送“无法读取未定义的属性'id'”。我不知道如何强制第一个回调来完成这个并启动其他的。Nodejs回调在回调中的Mysql回调
router.get('/article/:title', function(req, res){
dataBase.selectArticleByTitle(req.params.title, function(db_titleERR, db_titleResults){
console.log(db_titleResults);
dataBase.selectArticle(db_titleResults[0].id, function(db_resultsArticleERR, db_resultsArticle) {
//Get id of the previous article
dataBase.previousArticle(db_titleResults[0].id, function(db_previousIdERR, db_previousId){
//Get id of the next article
dataBase.nextArticle(db_titleResults[0].id, function(db_nextIdERR, db_nextId){
//Get lastArticle
dataBase.lastArticle(function(db_lastArticleERR, db_lastArticle) {
});
});
});
});
});
});
});
exports.selectArticleByTitle = function(title, callback){
connection.query('select * from article where title=?', [title], function(err, row){
if(err)
callback(err, null);
else{
if(row){
callback(null, row);
}
}
});
}
这里的日志 console.log(db_titleResults);
[RowDataPacket { ID:7, 体裁: '科学', 图片: 'XW', 源: 'xswx', 标题: 'zzazzaz', 元: 'azazadsq', inputDate: 2017-04-15T10:00:00.000Z, 游客:0}] []如果你想坚持原来的代码
预先感谢您
尝试打印出来行的内容,以帮助看看你正在退回。 'console.log(row);' –
好吧,我编辑了我的帖子。 –
不幸的是,尽管这绝对不是最好的解决方案,但您可以参与业界所称的_callback hell_,您在等待一个回调之前完成另一个回调。我很想看看其他解决方案。 – henry