2
app.use(function(req, res, next) {
var chatlog = [];
console.log('executed many timews why?')
var chatlog = redisClient.lrange('messages', 0, 99, function(err, reply) {
if (!err) {
var result = [];
for (var msg in reply) result.push(JSON.parse(reply[msg]));
if (result.length == 0) {
result.push({
"msg": 'welcome',
"nickname": "guest1"
})
}
console.log(result)
} else {
console.log('error getting chat messages')
}
res.locals = {
chatlog: result
};
next();
return
});
app.get('/', (req, res) => {
res.render('index', { })
})
私はかつて「/」にアクセスすると、コンソールには次のように出力呼ば行き方:エクスプレスミドルウェア何回
executed many timews why
[ { msg: 'welcome', nickname: 'guest1' } ]
executed many timews why
executed many timews why
executed many timews why
executed many timews why
[ { msg: 'welcome', nickname: 'guest1' } ]
[ { msg: 'welcome', nickname: 'guest1' } ]
[ { msg: 'welcome', nickname: 'guest1' } ]
[ { msg: 'welcome', nickname: 'guest1' } ]
executed many timews why
executed many timews why
[ { msg: 'welcome', nickname: 'guest1' } ]
[ { msg: 'welcome', nickname: 'guest1' } ]
executed many timews why
[ { msg: 'welcome', nickname: 'guest1' } ]
どのように私は私のミドルウェアが一度だけ実行することができますか?私が次から離れたら、それは一度だけ実行されますが、ページはロードされません。私がnext()を保持すると、何度も実行されます。
ありがとうございました。今それは適切に動作します。 – needitohelp
それは多くの意味を作り、私の問題を解決しました。ありがとうございました! –