使用node.js和express.js在Mongoose模型中搜索

时间:2012-12-28 10:56:31

标签: node.js express find schema mongoose

在猫鼬中我有这个模型:

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来做,但我想如果我在数组中有很多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的情况下做我想做的事情。任何解决方案......?

1 个答案:

答案 0 :(得分: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
}