2012-12-28 83 views
0

在貓鼬我有了這個模型:搜索與node.js的一個貓鼬模型內,express.js

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。任何解決方案...?

回答

0

不,您不能在user文檔實例上調用findOne。你可以做的卻是包括在主UserModel.findOne通話這樣的following領域:

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 
}