布尔查询参数被Sails.js视为字符串

时间:2015-03-01 20:42:01

标签: javascript sails.js

我的'用户'模型(表)有一个名为'active'的type: 'boolean'属性(列)。在查询Blueprint API时:

案例1:http://localhost:1337/user?active=true

不返回任何数据。然而,

案例2:http://localhost:1337/user?active=1

表现出理想的方式。

我尝试跟踪请求,但无法超越actionUtil.js。 {1}在案例1中返回where,在案例2中返回{active: 'true'}。奇怪的是,作为字符串的数字转换为数字(1),但作为字符串的布尔值不转换。由于ORM已生成类型为{active: '1'}的此列,因此我确信在某处发生了“1”到1次转换。我只需要为布尔值添加另一个转换为0/1。有什么帮助吗?

如果有人能解释请求跟踪,那真的很棒!我不知道find.jstinyint(1)函数的定义位置。

1 个答案:

答案 0 :(得分:3)

  

我确信在某处发生了'1'到1的转换。

Yup - 在Javascript中。启动Javascript控制台并尝试:

"1" == true
"0" == false 
"true" == true
"false" == false

前两个将返回true。第二个将返回false

如果您要使用查询字符串的蓝图,则必须处理查询字符串中的所有内容都是字符串的事实。这意味着使用10代替truefalse,以及其他事项(例如小心===)。