sql >> Base de Datos >  >> NoSQL >> MongoDB

Model.find().toArray() afirmando no tener el método .toArray()

El toArray la función existe en el Cursor class del controlador Native MongoDB NodeJS (referencia). El find El método en MongooseJS devuelve una Query objeto (referencia). Hay algunas formas en que puede realizar búsquedas y obtener resultados.

Como no hay llamadas síncronas en el controlador NodeJS para MongoDB, deberá usar un patrón asíncrono en todos los casos. Los ejemplos de MongoDB, que a menudo están en JavaScript usando MongoDB Console, implican que el controlador nativo también admite una funcionalidad similar, lo cual no es así.

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

Entonces, para llamarlo:

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

También puede ordenar en un campo (como la fecha de una publicación de blog, por ejemplo):

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

El código anterior se clasificaría en orden descendente según un campo llamado postDate (sintaxis alternativa:sort({ postDate: -1}) .