【问题标题】:Search inside a Mongoose model with node.js and express.js使用 node.js 和 express.js 在 Mongoose 模型中搜索
【发布时间】:2012-12-13 15:45:08
【问题描述】:

在猫鼬中我有这个模型:

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 的情况下做我想做的事。有什么解决办法...?

【问题讨论】:

    标签: node.js express find schema mongoose


    【解决方案1】:

    不,您不能在 user 文档实例上调用 findOne。您可以做的是将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
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2011-10-12
      • 2014-04-14
      • 2015-11-06
      • 1970-01-01
      • 2020-12-21
      • 2011-12-14
      • 1970-01-01
      • 2014-09-19
      相关资源
      最近更新 更多