Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

alguem pode me ajudar a fazer uma paginação com nodejs ?

Guys alguem pode me ajudar a fazer uma paginação com nodejs ? utilizando os verbos http em memoria no caso seria o verbo get ?

4 respostas

Seria o get mesmo. Da pra passar o numero da página de duas formas, pela url ou pela query(parametro do get). Suponho que esteja usando o express.

Pela url:

// express 4.x
app.get('/model/:page', function(req, res) {
    res.send("Número da página é " + req.params.page);
});

// express 3.x
app.get('/model/:page', function(req, res) {
    res.send("Número da página é " + req.param('page'));
});

Por parametro do GET:

// Cliente acessaria por /model?page=1

// express 4.x
app.get('/model', function(req, res) {
    res.send("Número da página é " + req.query.page);
});

// express 3.x
app.get('/model', function(req, res) {
    res.send("Número da página é " + req.query('page'));
});

Entendi perfeitamente , mas ainda tenho uma duvida eu devo passar um json e usar <%for> no html ?

// Paginação 
app.get('/vouchers/:page', function(req, res) {
    res.render('vouchers/index',{paginacao:[]} + req.param('page'));
});
e no html

 <%for(var i=0;i<paginacao.length;i++) {%>
      <ul class="pagination">
          <li class="active"><a href="#"><%=paginacao[i]%></a></li>
      </ul> 
  <%}%>

? obg mano :)

solução!

Voce pode responder das duas formas. Se o seu cliente pedir json, responde json e nao responde html. Costumo fazer paginacao com 3 dados: lista dos objetos, pagina atual e numero de paginas.

app.get('/vouchers/:page', function(req, res) {

    // lógica da paginacao    

        res.format({
            html: function() {
                res.render('vouchers/index', {
                  vouchers,
                  page,
                  n_pages
                });
            },
            json: function() {
                res.json({
                  vouchers,
                  page,
                  n_pages
                });
            }
        });
});

Ai o cliente que decidirá o que formato ele deseja

Obrigado de coração brô <3