Запрос ватерлинии, где предложение с 2 или предложениями

Я пытаюсь написать запрос о ватерлинии парусов с двумя предложениями «или», где оба должны быть истинными, но, похоже, это не работает. Это запрос, который я пробовал, но он тянет только тогда, когда одно из предложений «или» соответствует его критериям, которые я пытаюсь вернуть только тогда, когда выполняются оба критерия «или», а не одно. Это ошибка или есть другой способ сделать это?

Employee.find()
.where({
  or: [
    {locationId: employee.currentLocation.id},
    {facilityId: employee.facilityId, userName:employee.userName,accountOwner: true}
]})
.where({
  or:[
    {employeeId: { startsWith: params.search.value }},
    {fullName: { startsWith: params.search.value }},
    {street: { startsWith: params.search.value }},                              
    {emailAddress: { startsWith: params.search.value }},
    {employeeType: { startsWith: params.search.value }},
    {status: { startsWith: params.search.value }}
]});

person jerry    schedule 05.02.2015    source источник
comment
Вот как работает ИЛИ .   -  person Osukaa    schedule 09.03.2015


Ответы (1)


Если вы используете адаптер mongo, вы можете сделать следующее с двумя операторами OR вместе:

Employee.find().where({
  $and: [{
    or: [{
      locationId: employee.currentLocation.id
    }, {
      facilityId: employee.facilityId,
      userName: employee.userName,
      accountOwner: true,
    }],
  }, {
    or:[{
      employeeId: { startsWith: params.search.value }
    }, {
      fullName: { startsWith: params.search.value }
    }, {
      street: { startsWith: params.search.value }
    }, {
      emailAddress: { startsWith: params.search.value }
    }, {
      employeeType: { startsWith: params.search.value }
    }, {
      status: { startsWith: params.search.value }
    }],
  }],
});
person Jim Geurts    schedule 11.08.2016