toArray
関数はCursor
に存在します ネイティブMongoDBNodeJSドライバーのクラス(リファレンス)。 find
MongooseJSのメソッドはQuery
を返します オブジェクト(参照)。検索を実行して結果を返す方法はいくつかあります。
MongoDBのNodeJSドライバーには同期呼び出しがないため、すべての場合に非同期パターンを使用する必要があります。 MongoDBの例は、MongoDBコンソールを使用してJavaScriptで行われることが多く、ネイティブドライバーも同様の機能をサポートしていることを示していますが、サポートしていません。
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);
});
};
次に、それを呼び出すには:
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('/');
});
フィールドで並べ替えを行うこともできます(たとえば、ブログの投稿日など):
Blog.find().where("author", username).
sort("-postDate").exec(/* your callback function */);
上記のコードは、postDate
というフィールドに基づいて降順で並べ替えられます。 (代替構文:sort({ postDate: -1})
。