如何在快递中将 TINYINT(1) 转换为 BOOLEAN?
Posted
技术标签:
【中文标题】如何在快递中将 TINYINT(1) 转换为 BOOLEAN?【英文标题】:How to convert TINYINT(1) to BOOLEAN in express? 【发布时间】:2021-07-20 12:55:42 【问题描述】:我的 mysql 数据库中有一些列(infected
和 absence
)存储为 TINYINT(1)
。
当我做一个简单的时候
app.get("/users", (req, res) =>
const sql = `SELECT * from users`;
connection.query(sql, (err, results) =>
if (err)
return res.send(err);
else
return res.json( results );
);
);
在我的后端和一个
useEffect(() =>
axios
.get(`$config.server/users`)
.then((result) =>
setUsers(result.data.results);
)
.catch((error) => console.error(error));
, [setUsers]);
在我的 ReactJS 前端,我无法执行以下操作:
users.filter((u) => u.infected);
只有
users.filter((u) => u.infected === 1);
正在工作。
由于使用users.filter((u) => u.infected);
对我来说更直观,我想知道,在最佳实践中我该如何处理?
-
我是否需要将我的值存储为另一种类型?
是否需要以其他方式选择值?
查询后是否需要将值从 1 转换为 TRUE,从 0 转换为 FALSE?
get 请求后是否需要翻译前端中的值?
我尽量避免使用 4. 除非这不是最好的选择,因为我的前端已经期望到处都是布尔值(我将数据库切换到 MySQL)。
【问题讨论】:
"我无法执行以下操作:" --- 为什么? “不能”到底是什么意思? 我不知道?它不工作 - 只有=== 1
工作。也许这是因为typeof u.infected
是一个数字?
你能显示console.log(JSON.stringify(u.infected))
的正值和负值吗?
它正在记录 0
和 1
假设它们是数字并且是 0
或 1
- users.filter((u) => u.infected)
会起作用。如果行为仍然不是您所期望的 - 那么 实际数据 不是您认为的那样,您应该提供一些实际演示问题的代码。
【参考方案1】:
尝试使用!!
,它们会将值转换为布尔类型。
相当于:Boolean(anyValue)
。
users.filter(u => !!u.infected);
【讨论】:
以上是关于如何在快递中将 TINYINT(1) 转换为 BOOLEAN?的主要内容,如果未能解决你的问题,请参考以下文章