sql >> Database teknologi >  >> NoSQL >> MongoDB

Model.find().toArray() hævder ikke at have .toArray()-metoden

toArray funktion findes på Cursor klasse fra Native MongoDB NodeJS-driveren (reference). find metode i MongooseJS returnerer en Query objekt (reference). Der er et par måder, hvorpå du kan foretage søgninger og returnere resultater.

Da der ikke er nogen synkrone opkald i NodeJS-driveren til MongoDB, skal du i alle tilfælde bruge et asynkront mønster. Eksempler på MongoDB, som ofte er i JavaScript ved hjælp af MongoDB-konsollen, antyder, at den oprindelige driver også understøtter lignende funktionalitet, hvilket den ikke gør.

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);
          });
};

Så for at kalde det:

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('/');
});

Du kan også sortere på et felt (som f.eks. en blogindlægsdato):

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

Ovenstående kode vil sortere i faldende rækkefølge baseret på et felt kaldet postDate (alternativ syntaks:sort({ postDate: -1}) .



  1. Tjek det aktuelle antal forbindelser til MongoDb

  2. Hvilke parametre overføres til Mongoose-tilbagekald

  3. Opdatering af indlejret dokumentejendom i Mongodb

  4. MongoDB grupperer efter værdier i et matrixfelt