2017-10-10 2 views
0

J'essaye de retourner créer une liste paginée. J'ai utilisé graphql pour interroger les données. Avec ma requête, je passe le nombre d'enregistrements dont j'ai besoin (Dans une variable nommée first) et l'ID du dernier enregistrement récupéré (Dans une variable appelée after). Maintenant, j'ai réussi à écrire une requête (Notez que j'ai utilisé mongoose) pour aller chercher les enregistrements. Maintenant, ce que je dois faire est d'obtenir les informations relavant pour effectuer la pagination comme hasNextPage, hasPreviousPage, currentPage et totalPages.Dans mongo comment obtenir la position actuelle de l'enregistrement dans le tableau avec les enregistrements totaux pour la pagination?

Pour obtenir la plupart de ces informations, j'ai besoin d'obtenir le nombre total d'enregistrements dans la base de données. Pour ce faire, je dois envoyer une autre requête db. J'ai également besoin de connaître la position de l'enregistrement dans le tableau. Aucune idée comment.

est ici la requête:

new Promise((resolve, reject) => 
    Company.where('_id') 
    .gt(after) 
    .limit(first) 
    .lean() 
    .exec((error, doc) => { 
     if (error) { 
     reject(error); 
     } 

     resolve({ 
     edges: doc, 
     pageInfo: { 
      hasNextPage: '...', 
      hasPreviousPage: '...', 
      currentPage: '...', 
      totalPages: '...' 
     } 
     }); 
    })) 

Toute idée comment faire cela efficacement?

Répondre

1

vous pouvez essayer ce module mongoose-paginate

ici ce que j'utilise, pour la pagination,

var current = req.query.filter.current; 
var limit = req.query.filter.limit; 
console.log('params.query.filter.current',current); 
var skip = Number(limit)*Number(current)-Number(limit); 
console.log('skip::',skip); 
    Cours.find({'attributes.version.status': true}).skip(skip).limit(limit).sort({_id:'asc'}).exec(function (err, resulta) { 
     if (err) { 
      console.log('erreur trouverCours'); 
      res.json({ 
       protecteds: err 
      }); 
     } 
     console.log('cours ::', resulta); 
     res.json({ 
      "data": resulta 
     }); 
    }); 
+0

Le package est vraiment vieux et un maintien du droit? – THpubs

+1

avez-vous essayé celui-ci [link] (https://github.com/edwardhotchkiss/mongoose-paginate) –

+0

Merci. Enfin réglé avec ce plugin. – THpubs