2014-09-13 3 views
0

J'utilise node et mongo avec le client natif.Nodejs mongo retourne des données avec des informations de pagination

Je voudrais ajouter la pagination à mon application.

Pour obtenir la pagination, je dois mes réponses pour revenir toujours count aux côtés data

Je voudrais obtenir quelque chose comme:

{ 
    count : 111, 
    data : [ { 'a' : 'only first item was requested' } ] 
} 

Je peux le faire en mongo

> var guy = db.users.find({}).limit(1) 
> guy.count() 
11 
> guy.toArray() 
[ 
    { 
     "_id" : ObjectId("5381a7c004fb02b10b557ee3"), 
     "email" : "[email protected]", 
     "fullName" : "guy mograbi", 
     "isAdmin" : true, 
     "password" : "fe20a1f102f49ce45d1170503b4761ef277bb6f", 
     "username" : "guy", 
     "validated" : true 
    } 
] 

mais quand je fais la même chose avec le client nodejs mongo, j'ai des erreurs.

var cursor = collection.find().limit(1); 
cursor.toArray(function(){ .. my callback .. }); 
cursor.count(); 

Il semble que

  • count ne définit pas le curseur
  • qu'une fois que j'appliqué toArray le curseur, je ne peux pas utiliser à nouveau le curseur

Comment, en utilisant nodejs, puis-je accomplir la même chose que moi avec mongo directement?

+0

quel 'client' vous utilisez? – Ravi

+0

client nodejs mongo natif. Je le déclare dans la première phrase. –

+0

@Ravi - pas sûr que vous avez reçu une notification sur ma réponse .. donc j'ajoute ce commentaire. –

Répondre

1

Comme d'autres l'ont dit, si vous voulez avoir un nombre total d'éléments et ensuite les données dont vous aurez besoin pour avoir deux requêtes, il n'y a pas d'autre moyen. Pourquoi êtes-vous préoccupé par la création de deux requêtes?

+1

essayant toujours d'améliorer .. –

Questions connexes