私のフィードがインデックスルートパス/
で表示され、その後追加のページが/feed/:pageNumber
でアクセスされるページング設定があります。次のレコードと前のレコードのページネーションには問題はありませんが、最後のpreviousPageでこの機能を使用したい場合は、/
のパスにリダイレクトしてください。これは最新のレコードがあるためです。 else文でres.redirect( '/')を使用しようとしましたが、エラーError: Can't set headers after they are sent.
が発生します。最後のpreviousPageクリックで家にリダイレクトする方が良いでしょうか?Expressjsページネーションのリダイレクト
E.x.ユーザーは「/」をクリックし、「次へ」をクリックして「/フィード/ 2」に送信します。ユーザーが「前」をクリックすると、「/」に戻されます。それらが/ feed/3,4,5、etc /にある場合、ユーザは現在のパラメータ値よりも1つ少ない値になります。
セクションは私が修正しようとしている:
if(req.params.pageNumber > 2){
res.locals.previous = true;
res.locals.previousPage = req.params.pageNumber - 1;
} else {
res.locals.previous = true;
res.locals.previous = res.redirect('/');
}
ビュー:
<!DOCTYPE html>
<head>
{{> app/app-head}}
</head>
<body>
{{> app/app-navigation}}
<div class="container">
<h1 class="page-title-header">Activity Feed</h1>
{{> app/card}}
</div>
{{#if previous}}
<a href="/feed/{{previousPage}}">Previous Page</a>
{{/if}}
{{#if secondPage}}
<a href="/feed/{{secondPage}}">Next Page</a>
{{/if}}
{{#if next}}
<a href="/feed/{{nextPage}}">Third Page</a>
{{/if}}
</body>
ルート:
/*==== /====*/
appRoutes.route('/')
.get(function(req, res){
models.Card.findAll({
order: 'cardDate DESC',
include: [{
model: models.User,
where: { organizationId: req.user.organizationId },
attributes: ['organizationId', 'userId']
}],
limit: 10
}).then(function(card){
function feedLength(count){
if (count >= 10){
return 2;
} else {
return null;
}
};
res.render('pages/app/high-level-activity-feed.hbs',{
card: card,
user: req.user,
secondPage: feedLength(card.length)
});
});
})
.post(function(req, res){
models.Card.create({
card: req.body.cardDate,
userId: req.user.userId
}).then(function() {
res.redirect('/app');
}).catch(function(error){
res.send(error);
})
});
appRoutes.route('/feed/:pageNumber')
.get(function(req, res){
function paginationPage(count){
if(count == 2){
return 10;
} else {
return (count - 1) * 10;
}
};
var skip = parseInt(req.params.pageNumber);
models.Card.findAll({
order: 'cardDate DESC',
include: [{
model: models.User,
where: { organizationId: req.user.organizationId },
attributes: ['organizationId', 'userId']
}],
offset: paginationPage(skip),
limit: 10
}).then(function(annotation){
if(annotation.length == 10){
res.locals.next = true;
res.locals.nextPage = parseInt(req.params.pageNumber) + 1;
console.log('This is the next page pagination: ' + res.locals.nextPage);
}
if(req.params.pageNumber > 2){
res.locals.previous = true;
res.locals.previousPage = req.params.pageNumber - 1;
} else {
res.locals.previous = true;
res.locals.previous = res.redirect('/');
}
res.render('pages/app/high-level-activity-feed.hbs',{
card: card,
user: req.user
});
});
})
働きました!ヘルプと説明のために@robertklepに感謝します。 – cphill