Далее все эти правильные способы использования оператора ИЛИ? - PullRequest
0 голосов
/ 01 октября 2018

Я видел 3 способа, которыми люди используют оператор ИЛИ ...

where: { $or : [ {attr:val}, {attr:val}] } 

-

where: { $or : { attr:val, attr:val} } 

-

where: { attr: { $or: [val, val] } }

всеэти действительны?а какие-нибудь ошибки?

1 Ответ

0 голосов
/ 01 октября 2018

Я могу ошибаться и не собираюсь голосовать "за".

Лучше использовать примеры из официальной документации .

и включить режим регистрации (см. параметр регистрации) , чтобы увидеть, что происходит с конкретным запросом

но я попытаюсь дать какую-то идею.

Я предпочитаю это - так как он более читабелен:

where: { $or : [ {attr:val1, some: val3}, {attr:val2} ] } 

- это

... WHERE ((attr = val1 AND some = val3) OR (attr = val2))

Этот я не могу сказать, какое значение принимается для сравнения.Поскольку это не массив, поэтому я могу предположить, что он будет использовать последнее определение, и поскольку нет других полей для построения запроса, он не будет использовать OR

where: { $or : { attr: val1, attr: val2} } 

is

... WHERE attr = val2   

дополнительно:

where: { 
  user_id: 5, 
  $or : { attr: val1, attr: val2} 
} 

is

... WHERE user_id = 5 OR attr = val2  

третий немного неоднозначный, я бы рекомендовал использовать $in

where: { attr: { $in: [val1, val2] } }

is

... WHERE attr IN (val1, val2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...