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

Boolean query parameter being treated as string by Sails.js

本文关键字:字符串 js Sails 查询 参数 布尔      更新时间:2023-09-26

我的"用户"模型(表(具有一个名为"active"的属性(列(type: 'boolean'。查询蓝图 API 时:

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

不返回任何数据。然而

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

以所需的方式运行。

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

如果有人能解释请求跟踪,那就太好了!我不知道查找.js中的exec()函数在哪里定义。

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

是的--在Javascript中。 启动您的 Javascript 控制台并尝试:

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

前两个将返回true . 后两个将返回false .

如果要将蓝图与查询字符串一起使用,则必须处理查询字符串中的所有内容都是字符串的事实。 这意味着使用10而不是 truefalse ,除其他外(例如小心=== (。