Правильный синтаксис для значений IS NULL с Loopback и MySQL - PullRequest
0 голосов
/ 10 октября 2018

Я использую Loopback (v3) для управления конечными точками с БД MySQL.Из моего приложения я использую Axios для получения данных о конечной точке.

В БД у меня есть такая запись:

id  name  value   //other columns
1   Sally  0.00
2   Sally  135.00
3   Sally  null

Я могу запросить каждое значение в SQL:

select * from Tab where name = 'Sally' and value = 0;
select * from Tab where name = 'Sally' and value is null;
select * from Tab where name = 'Sally' and value > 0;

Проблема: я не могу воспроизвести некоторые из этих запросов с помощью Axios из приложения (или с помощью моих тестов на скручивание).Например, я хотел бы получить только нулевые значения и не могу найти правильный синтаксис для «is null» для добавления в фильтр Loopback.

Вот те локоны, которые я пробовал:

curl -g http://my_ip/api/tabs <- работает как положено </em>

curl -g http://my_ip/api/tabs\?filter\[where\]\[value\]\=null <- возвращает только 0значения и ни одно из нулевых! </p>

Итак, чтобы определить только нулевые, я попытался это решение :

curl -g http://my_ip/api/tabs\?filter\[where\]\[value\]\[eq\]\=null | jq .

Возвращает ошибку (и в любом случае, Я не могу найти оператор "eq" в списке, предоставленном loopback docs .

Как я могу получить отличные 0 и нулевые значения с помощью loopback, копируя то, что я получил напрямуюв MySQL? Есть ли способ сделать «нулевой» фильтр с Loopback?

1 Ответ

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

Отказ от ответственности: я являюсь соавтором и сопровождающим LoopBack.

Параметры строки запроса всегда имеют строковое значение, невозможно определить, имелось ли в виду значение nullкак строка "null" или как ключевое слово JavaScript null.

К счастью, LoopBack поддерживает также кодировку JSON для сложных аргументов строки запроса.С помощью JSON легко различить числа, строки и значения null.

Вот запрос для перечисления всех экземпляров модели со значением NULL:

curl -g 'http://my_ip/api/tabs?filter={"where":{"value":null}}'

Если выДля создания URL-адреса запроса в JavaScript просто преобразуйте свой аргумент filter из объекта в строку с помощью JSON.stringify и позвольте своей клиентской библиотеке HTTP URL-кодировать значение.

Вот типичный запрос, который вы будете выполнятьполучить в результате:

http://my_ip/api/tabs?filter=%7B%22where%22%3A%7B%22value%22%3A%20null%7D%7D
...