0

だから、私は2つのマングースモデルを持っています:

User: {
   name: String,
   ..........
   locations: []
}

Location: {
   title: String,
   .............
   owner: {
      type: Schema.Types.ObjectId,
      ref: 'User'
   }
}

ユーザーの場合、ノード内の私のルックアップ関数は次のようなものです。

api.find = function(filter, sort, skip, limit){
    var callback = arguments[arguments.length - 1];
    filter = treatFilter(filter);
    sort = treatSort(sort);
    if(callback && typeof callback === 'function'){
        User.find(filter).sort(sort).skip(skip).limit(limit).exec(function(err, users){
            if(users.length === 0){
                callback(err, users);
            }
            for(var i = 0, complete = 0; i < users.length; i++){
                (function(idx){
                    var user = users[idx];
                    var id = user.id;
                    Location.find({owner: id}, function(err, locations){
                        user.locations = locations;
                        if(++complete === users.length){
                            callback(err, users);
                        }
                    });
                })(i);
            }
        });
    }
};

sort場所の数で並べ替えるには、オブジェクトをどのようにする必要がありますか?

ありがとう、疑問がある場合は、私のコードを説明させていただきます

4

1 に答える 1

2

この投稿によると(マングース-配列の長さで並べ替え

ロケーションカウントを格納する別のフィールドを維持する必要があります-オーバーヘッドはそれほど多くありませんが、維持するのは少し面倒です

仮想フィールドによる並べ替えを検討しましたが、これも不可能であり、おそらく非常に非効率的です...

于 2013-02-17T19:37:39.667 に答える