sql >> Databasteknik >  >> NoSQL >> MongoDB

Model.find().toArray() påstår sig inte ha .toArray()-metoden

toArray funktionen finns på Cursor klass från Native MongoDB NodeJS-drivrutinen (referens). find metod i MongooseJS returnerar en Query objekt (referens). Det finns några sätt du kan göra sökningar och returnera resultat.

Eftersom det inte finns några synkrona anrop i NodeJS-drivrutinen för MongoDB, måste du alltid använda ett asynkront mönster. Exempel på MongoDB, som ofta finns i JavaScript med MongoDB-konsolen, antyder att den inbyggda drivrutinen också stöder liknande funktionalitet, vilket den inte 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);
          });
};

Sedan, för att kalla 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 också sortera på ett fält (som ett blogginläggsdatum till exempel):

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

Ovanstående kod skulle sorteras i fallande ordning baserat på ett fält som heter postDate (alternativ syntax:sort({ postDate: -1}) .



  1. Det gick inte att automatiskt konfigurera en datakälla:'spring.datasource.url' är inte specificerad

  2. AWS Lambda och Redis klient. Varför kan jag inte ringa tillbaka?

  3. Hur uppdaterar jag ett Mongo-dokument efter att ha infogat det?

  4. Sammanfoga en sträng och ett nummer i SQL