sql >> Databáze >  >> NoSQL >> MongoDB

Model.find().toArray() tvrdí, že nemá metodu .toArray().

toArray funkce existuje na Cursor třídy z ovladače Native MongoDB NodeJS (odkaz). find metoda v MongooseJS vrací Query objekt (odkaz). Existuje několik způsobů, jak můžete vyhledávat a vracet výsledky.

Protože v ovladači NodeJS pro MongoDB nejsou žádná synchronní volání, budete muset ve všech případech použít asynchronní vzor. Příklady pro MongoDB, které jsou často v JavaScriptu pomocí MongoDB Console, naznačují, že nativní ovladač také podporuje podobnou funkci, kterou nepodporuje.

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

Potom to zavolejte:

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

Můžete také třídit podle pole (jako je například datum příspěvku na blogu):

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

Výše uvedený kód by seřadil v sestupném pořadí na základě pole nazvaného postDate (alternativní syntaxe:sort({ postDate: -1}) .



  1. autentizace mongo z příkazového řádku se nezdaří

  2. Propojení kontejneru Redis s jiným kontejnerem (Docker)

  3. Automatizace kontroly konfigurace databáze

  4. Jak mohu přejmenovat pole pro všechny dokumenty v MongoDB?