sql >> データベース >  >> NoSQL >> MongoDB

.toArray()メソッドがないと主張するModel.find()。toArray()

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



    1. 複数のLua状態(マルチスレッド)間でデータを渡す方法は?

    2. 最新のMongoDBバージョンにアップグレードするためのヒント

    3. RedisExpireが機能しない

    4. マングーススキーマ参照と未定義のタイプ'ObjectID'