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

时间:2021-04-27 07:29:09

标签: javascript mysql express boolean tinyint

我的 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. 我需要以另一种类型存储我的值吗?
  2. 我需要以不同的方式选择值吗?
  3. 我是否需要在查询后将值从 1 转换为 TRUE,将 0 转换为 FALSE?
  4. 我是否需要在获取请求后翻译前端中的值?

我尽量避免使用 4. 除非这不是最好的交易,因为我的前端已经期望到处都是布尔值(我将数据库切换到 MySQL)。

1 个答案:

答案 0 :(得分:1)

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

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

相关问题