如何在快递中将 TINYINT(1) 转换为 BOOLEAN?

Posted

技术标签:

【中文标题】如何在快递中将 TINYINT(1) 转换为 BOOLEAN?【英文标题】:How to convert TINYINT(1) to BOOLEAN in express? 【发布时间】:2021-07-20 12:55:42 【问题描述】:

我的 mysql 数据库中有一些列(infectedabsence)存储为 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)) 的正值和负值吗? 它正在记录 01 假设它们是数字并且是 01 - users.filter((u) => u.infected) 会起作用。如果行为仍然不是您所期望的 - 那么 实际数据 不是您认为的那样,您应该提供一些实际演示问题的代码。 【参考方案1】:

尝试使用!!,它们会将值转换为布尔类型。 相当于:Boolean(anyValue)

users.filter(u => !!u.infected);

【讨论】:

以上是关于如何在快递中将 TINYINT(1) 转换为 BOOLEAN?的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿快递服务器中将字符串解码/编码为base64

在 SQL Server 中将 Bool 转换为 Bit

MySQL 转换为 TINYINT

如何将 Postgresql 布尔值转换为 MySQL Tinyint?

将 TINYINT(1) 转换为字符串

tinyint用java转化为int的坑