使用环回和MySQL的IS NULL值的正确语法

时间:2018-10-10 01:55:01

标签: mysql loopbackjs

我使用回送(v3)通过MySQL DB管理端点。从我的应用程序中,我使用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复制这些查询中的某些查询(也无法使用我的curl测试)。例如,我只想获取null值,而找不到要放入回送过滤器的“ is null”的正确语法。

这是我尝试过的卷发:

curl -g http://my_ip/api/tabs <-按预期工作

curl -g http://my_ip/api/tabs\?filter\[where\]\[value\]\=null <-仅返回0个值,不返回任何空值!

因此,仅找出空值,我尝试了this solution

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

它返回一个错误(无论如何,我在loopback docs提供的列表中找不到“ eq”运算符。

如何通过环回获取不同的0和null值,从而直接复制MySQL中的内容?有没有办法使用环回制作“为空”过滤器?

1 个答案:

答案 0 :(得分:1)

免责声明:我是LoopBack的合著者和维护者。

查询字符串参数始终具有字符串值,无法分辨值null是字符串"null"还是JavaScript关键字null

幸运的是,LoopBack还支持复杂查询字符串参数的JSON编码。使用JSON,很容易区分数字,字符串和null值。

以下是列出所有具有NULL值的模型实例的查询:

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

如果您使用JavaScript构建请求URL,只需通过filterJSON.stringify参数从对象转换为字符串,然后让HTTP客户端库对值进行URL编码。

以下是您会收到的典型请求:

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