2016-05-18 4 views
0

Я пытаюсь отфильтровать модель по нескольким параметрам.Фильтровать отфильтрованные результаты в Mongoose

Во-первых, я считаю, эти объекты с именем, которое содержит запрос парам:

if (firstName){ 
    User.find({firstName: new RegExp(firstName, "i")}, function (err, users) { 
     filteredUsers = users; 
    }); 
} 

Затем я хочу продолжить фильтрацию filteredUsers как:

if (lastName){ 
    filteredUsers.find({firstName: new RegExp(lastName, "i")}, function (err, users) { 
     filteredUsers = users; 
    }) 
} 

и т.д.

Тем не менее, я, естественно, получаю эту ошибку:

#<Object> is not a function 

Как выполнить фильтрацию результатов фильтрации?

+0

Образом, у вас это не делает сцену. Вы не можете запросить базу данных с простым массивом. вы должны пересмотреть свою стратегию, я думаю. –

ответ

2

aggregation - это то, что вы ищете. Ваш код будет выглядеть (я не пробовал мангуста):

Users.aggregate(
    [ 
    { $match: firstname ? { firstname: new RegExp(firstname, "i") } : {} }, 
    { $match: lastname ? { lastname: new RegExp(lastname, "i") } : {} } 
    ] 
); 
Смежные вопросы