【问题标题】:How can I return an object instead of an array?如何返回对象而不是数组?
【发布时间】:2020-06-29 14:19:36
【问题描述】:

我试图返回一个 JSON 对象,但它返回的是一个数组。我使用主键进行查询,所以我确信我只会得到一个结果。

这是我的方法:

router.get("/student_info/:id", (req, res, next) => {
    connection.getConnection((error, currentConnection) => {
        if (!!error) {
            console.log("Error occurred while connecting db")
        } else {
            let id = req.params.id;
            currentConnection.query("SELECT * FROM students WHERE id=" + "'" + id + "'", (error, rows, fields) => {
                if (!!error) {
                    console.log(error.message)
                } else {
                    res.status(200).json(rows);
                }
                currentConnection.release();
            });
        }
    });
});

我想要的是这个:

    {
        "id": "171-15-8966",
        "name": "Alif Hasnain",
        "course_code": "CSE412,CSE413"
    }

但我得到这样的结果:

[
    {
        "id": "171-15-8966",
        "name": "Alif Hasnain",
        "course_code": "CSE412,CSE413"
    }
]

【问题讨论】:

    标签: javascript mysql node.js express


    【解决方案1】:

    只需获取json转换前的数组第一个元素即可:

    res.status(200).json(rows[0]);
    

    【讨论】:

      【解决方案2】:

      默认情况下,查询返回由选择查询反映的行数组。由于您的查询具有单个结果,因此它作为单个对象的数组返回给用户。

      你可以改成

      res.status(200).json(rows[0]);
      

      如果有更好的替代品,请告诉我们。

      【讨论】:

        【解决方案3】:

        试试这个,使用嵌套数组解构

        res.status(200).json([[rows]]);
        

        您可以阅读此博客以了解有关 ES6 - 解构的更多信息

        ES6 - Understanding Destructuring

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-11
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          • 2019-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多