sql >> Database >  >> NoSQL >> MongoDB

Model.find().toArray() beweert geen .toArray()-methode te hebben

De toArray functie bestaat op de Cursor class van het Native MongoDB NodeJS-stuurprogramma (referentie). De find methode in MongooseJS retourneert een Query voorwerp (referentie). Er zijn een paar manieren waarop u zoekopdrachten kunt uitvoeren en resultaten kunt retourneren.

Aangezien er geen synchrone aanroepen zijn in het NodeJS-stuurprogramma voor MongoDB, moet u in alle gevallen een asynchroon patroon gebruiken. Voorbeelden voor MongoDB, die vaak in JavaScript zijn met behulp van de MongoDB-console, impliceren dat de native driver ook vergelijkbare functionaliteit ondersteunt, wat niet het geval is.

var userBlogs = function(username, callback) {
    Blog.find().where("author", username).
          exec(function(err, blogs) {
             // docs contains an array of MongooseJS Documents
             // so you can return that...
             // reverse does an in-place modification, so there's no reason
             // to assign to something else ...
             blogs.reverse();
             callback(err, blogs);
          });
};

Om het dan te noemen:

userBlogs(req.user.username, function(err, blogs) {
    if (err) { 
       /* panic! there was an error fetching the list of blogs */
       return;
    }
    // do something with the blogs here ...
    res.redirect('/');
});

U kunt ook sorteren op een veld (zoals de datum van een blogpost bijvoorbeeld):

Blog.find().where("author", username).
   sort("-postDate").exec(/* your callback function */);

De bovenstaande code sorteert in aflopende volgorde op basis van een veld met de naam postDate (alternatieve syntaxis:sort({ postDate: -1}) .



  1. Datum invoegen en opvragen met MongoDB en Nodejs

  2. Wat betekent te veel positionele opties bij het doen van een mongo-export?

  3. Tips voor het upgraden van Percona Server voor MongoDB

  4. waarom is het zo traag met 100.000 records bij het gebruik van pijplijn in redis?