0

マングースでは、このモデルを持っています:

var userschema = new mongoose.Schema({

  user: String,   
  following: [String],
  followers: [String]

}); 

var UserModel =  db.model('UserModel', userschema);

しかし、ユーザー内で、次の配列とフォロワーの配列内を検索する人が誰なのかわかりません。簡単にできますがUserModel.find({ user: req.session.user }, function(err, user){[...]}) 、その中で、配列内の特定の文字列を検索したいfollowingfollowers. を使用して実行できますがfor loop、配列内に多くの文字列がある場合、検索が遅くなるか、問題になることさえあると思います。これを行うことは可能ですか?:

UserModel.findOne({ user: req.session.user }, function(err, user){

   if (err) throw err;    

     user.findOne({ following: randomstring }, function(err, nuser){

        if (err) throw err;

     });

});

このコードはうまくいかないと思いますが、for loop. 解決策はありますか...?

4

1 に答える 1

0

findOneいいえ、userドキュメント インスタンスを呼び出すことはできません。代わりにできることは、次のようにメイン コールにfollowingフィールドを含めることです。UserModel.findOne

UserModel.findOne({ user: req.session.user, following: randomstring }, 
    function(err, user){ ...

コールバックでuserは、そのユーザーがフォローしている場合にのみ設定されますrandomstring

もちろん、array.indexOfコードで配列を簡単に検索するためにも使用できます。

if (user.following.indexOf(randomstring) !== -1) {
    // user is following randomstring
}
于 2012-12-28T14:57:17.820 に答える