Поиск внутри модели Mongoose с узлами 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) {[...]}) Но внутри этого я хочу найти определенную строку внутри массивов следующих и последователей . Я могу сделать это с помощью для цикла , но я думаю, что если у меня есть много строк внутри массива, поиск будет медленным или даже проблематичным. Можно сделать это ?:

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
добавлено отредактировано
Просмотры: 1
nl ja de

1 ответы

Нет, вы не можете вызвать findOne в экземпляре документа user . Вместо этого вы можете указать следующее в основном вызове UserModel.findOne , например:

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

В обратном вызове пользователь будет установлен только в том случае, если этот пользователь следил за randomstring .

Конечно, вы также можете использовать array.indexOf , чтобы легко найти массив в коде:

if (user.following.indexOf(randomstring) !== -1) {
   //user is following randomstring
}
0
добавлено