私は現在、データベースへの2回の別々の呼び出しの結果を含む配列を返すルートで作業しています。個別にモデル関数で呼び出す関数は意図したとおりに動作します。しかし、最初のコールバック内で2番目の関数を呼び出すことによってそれらを結合しようとすると、2番目の関数が "関数ではない"というエラーが表示されます。ここで私のリストルートのコードです。注意utilとerrorhandlerは、返される形式を助けるために作成したファイルであり、このエラーを引き起こしてはいけません。これを解決する助けに感謝します、ありがとう!Node.js関数が定義されていないエラーを返すコールバックでネストされました
ルート/リスト
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));
});
});
});
モデル内の関数定義を/リスト
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);
});
}
EDIT ::私は答えたとして、質問をマークする適切な方法のかわからないが、固定することにより、リストのオーバーライドと応答をオブジェクトにする私のコードを動作させることができました。助けてくれてありがとう!
'getListMovie'関数呼び出しで' list'を上書きしています。 '(err、list)'を '(err、movieList)'のように変更してください。 – forrestmid
それを指摘していただきありがとうございますが、それは関数が見つかりませんエラーを変更しません –