Il toArray
esiste una funzione sul Cursor
classe dal driver Native MongoDB NodeJS (riferimento). Il find
metodo in MongooseJS restituisce una Query
oggetto (riferimento). Esistono diversi modi per eseguire ricerche e restituire risultati.
Poiché non ci sono chiamate sincrone nel driver NodeJS per MongoDB, dovrai utilizzare un modello asincrono in tutti i casi. Esempi per MongoDB, che sono spesso in JavaScript usando la MongoDB Console, implicano che anche il driver nativo supporta funzionalità simili, ma non è così.
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);
});
};
Quindi, per chiamarlo:
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('/');
});
Puoi anche eseguire l'ordinamento su un campo (ad esempio la data di un post di un blog):
Blog.find().where("author", username).
sort("-postDate").exec(/* your callback function */);
Il codice sopra verrebbe ordinato in ordine decrescente in base a un campo chiamato postDate
(sintassi alternativa:sort({ postDate: -1})
.