Forms Mongo/Mongoose分页的HTML混淆

Forms Mongo/Mongoose分页的HTML混淆,forms,express,pagination,mongoose,Forms,Express,Pagination,Mongoose,我目前收集了大约4000份文档。我希望能够对结果进行分页,这样用户一次只能查看100个 我非常了解提交搜索时在服务器端应该做什么: app.post('/browse/:page', function(req, res) { var page = parseInt(req.params.page); data = {}; data.page = page; data.nextpage = page + 1; data.prevpage = page - 1

我目前收集了大约4000份文档。我希望能够对结果进行分页,这样用户一次只能查看100个

我非常了解提交搜索时在服务器端应该做什么:

app.post('/browse/:page', function(req, res) {
    var page = parseInt(req.params.page);
    data = {};
    data.page = page;
    data.nextpage = page + 1;
    data.prevpage = page - 1;

    var filterOptions = _.transform(req.body, function(result, value, key) {
        result[key] = new RegExp(value.replace(/[^A-Za-z 0-9!'-]/g,''), "i");
    });

    Model.find(filterOptions).sort('brand').skip((page-1)*100).limit(100).exec(function(err, results) {
        //do stuff here with results
        res.render('browse.ejs', data);
    })
})
})

现在,在我的查看页面上,这是我所拥有的,我认为我正在做一些非常错误的事情:

//header here

<div class="wrapper row2">
    <div id="container" class="clear">
    <section>
        <div id="browse-wrap">
            <div id="browse-left_col">
                <h3>Browse by:</h3><br>
                <form action="browse/1" method="post">
                    //form inputs and such here
                    <input type="submit" class="button" value="Browse">
                </form>
            </div>
            <div id="browse-right_col">
                //table of results here
                <p style="text-align:right;"><a href="#" onclick="document.forms[0].attr('action', 'browse/<%=nextpage%>').submit();return false;">Next 100 &#8594;</a></p>
            </div>
        </div>
    </section>
    </div>
</div>

//footer here

谢谢你的帮助!我对这一点非常陌生,非常感激。

我有几点建议:

使用app.get而不是app.post。您正在从服务器检索信息,app.get方法表示HTTP get,而HTTP get又表示检索。正如您所知,app.post方法代表一个HTTP post,应该用于向服务器添加信息。 使用app.get后,您可以将客户端上的页面表示为指向/browse/:page的简单链接 注意页数=0,页数=最后一页的边缘情况。当没有上一页时,您可能不想显示指向上一页的链接。 当您跳过大量文档时,使用skip会导致性能下降。只是要记住一些事情。 服务器:

app.get('/browse/:page', function(req, res) {
        ...
        Model.find().sort('brand').skip((page-1)*100).limit(100).exec(function(err, results) {
           res.render('browse.ejs', {data:data, results:results});
        });
})
使用ejs的客户端,如示例中所示:

// list data
<ul>
<% for(var i=0; i<results.length; i++) {%>
   <li><%= results[i]._id %></li>
<% } %>
</ul>
// show prev/next page links
<a href="/browse/<%= data.prevPage%>">previous</a>
<a href="/browse/<%= data.nextPage%>">next</a>
希望有帮助