mongoose、express、mongodb を使用して node.js アプリを実行しています。現時点では、データベース内のチームのリストを表示する「チーム」ページがあります。以前はまったく問題なく機能していましたが、以下のコードを追加したため....ページに移動して表示できます。その後、ページを更新するか、チームページをもう一度読み込もうとすると、ページがタイムアウトして読み込まれませんが、端末には表示されますGET /team
追加したコードは次のとおりです。
ルート/index.js
var getAllMeta = function(req, res, next){
Team.getAllMeta(function(err, teamsList){
if(!err && teamsList){
req.teamsList = teamsList;
}
next(err);
});
};
app.get('/team', getAllMeta, function(req, res){
util.log('Serving request for url[GET] ' + req.route.path);
if(req.session.user){
res.render('team', {'teamsList' : req.teamsList} );
} else {
res.redirect('/');
}
});
HTML コードは .jade で、teamsList を使用してチームを表示するための次のコードのみが含まれています。
div#teamListDiv
-if(teamsList.length > 0){
-each team in teamsList
a.teamLink(id="#{team.key}", href="#") #{team.name}
br
-}else{
h3 No teams till now..
-}
したがって、完全に正常に動作しますが、リフレッシュまたはリロードすると、タイムアウトして何もしません。どんな助けでも大歓迎です。
編集:ロードした後、ターミナルのエラーコードは次のとおりです
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:645:11)
at ServerResponse.res.setHeader (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/express/node_modules/connect/lib/patch.js:59:22)
at next (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/express/node_modules/connect/lib/proto.js:162:13)
at pass (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/express/lib/router/index.js:107:24)
at nextRoute (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/express/lib/router/index.js:100:7)
at callbacks (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/express/lib/router/index.js:164:11)
at Promise.getAllMeta (/Users/sweetest_viv/nodeapps/tournamentManager/routes/index.js:17:5)
at Promise.addBack (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/mongoose/lib/promise.js:128:8)
at Promise.EventEmitter.emit (events.js:96:17)
at Promise.emit (/Users/sweetest_viv/nodeapps/tournamentManager/node_modules/mongoose/lib/promise.js:66:38)
index.js の 17 行目のコードは次のとおりです。
next(err);
これは、上に投稿した getAllMeta 関数にあります
編集 2: Team.getAllMeta
Team.statics.getAllMeta = function(cb){
var query = this.find({}, 'key name', cb);
return query.exec(cb);
};