【问题标题】:I want to know how to got COUNT from SQL in reactjs我想知道如何在 react js 中从 SQL 中获取 COUNT
【发布时间】:2022-01-20 08:07:10
【问题描述】:

我的请求很好,但我想知道如何在 React 中使用我的响应。

SQL 请求:

    ```
    exports.countAllComments = async (req, res) => {
      const pId = req.params.id;
    
      db.query(
        "SELECT COUNT(*) FROM comments WHERE post_id = ?",
        [pId],
        (err, count) => {
          if (err) {
            res.status(500).json({ err });
            console.log(err);
          } else {
            console.log(count)
            res.status(200).json(count);
          }
        }
      );
    };
    ```
    

获取计数的前面:

```
    const [countData, setCountData] = useState(0);
    
      useEffect(() => {
        const fetchCount = async () => {
          try {
            const fetchData = await Axios.get(
              `http://localhost:3001/api/post/comment-count/${post.id}`,
              {
                headers: { Authorization: `Bearer ${test1.token}` },
              }
            );
            setCountData(fetchData.data[0]);
          } catch (err) {}
        };
        fetchCount();
      }, [post.id, test1.token]);
    
      console.log(countData);
    ```

控制台日志返回:“{COUNT(*): 4}”我怎样才能得到 (4)

【问题讨论】:

  • 试试这个Object.values(count)[0]。或者给count 取一个别名,然后访问它。
  • fetchData.data[0]['COUNT(*)'] ?
  • 如果您将查询更改为"SELECT COUNT(*) AS n FROM comments WHERE post_id = ?",那么它应该返回“{n: 4}”,这应该更容易从中获取所需的值。
  • 谢谢大家的回答,我用的是:fetchData.data[0]['COUNT(*)'] 我需要学习更多关于数组/对象的 js 课程大声笑

标签: javascript mysql reactjs


【解决方案1】:

鉴于您的简单示例,简单的解决方案将类似于 -

fetchData.data[0]['COUNT(*)']

但是,您确实应该考虑 API 的约定,并从您的 API 中强制执行某种返回类型,而不仅仅是从 SQL 查询返回响应。即您的 API 可能会返回一个对象,例如 -

{ count: x }

由您的 API 以一种满足合同的方式转换 SQL 查询的结果,这样您的 React 客户端与您的数据库层断开连接,只关心您的 API 合同。

这样你的客户端就变成了 -

fetchData.data.count

如果查询以某种方式在哪里更新等,这不会中断。

【讨论】:

  • 谢谢你的回答,我会去复习一下,这是我第一次从 sql 中使用 COUNT,当 axios 回答时我很惊讶:{COUNT(*): 4}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
相关资源
最近更新 更多