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. 我可以使用 a 来做到这一点for loop,但我认为如果数组中有很多 String ,搜索一个会很慢,甚至有问题。可以这样做吗?:

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 回答