【问题标题】:NodeJS: Get JSON from SQL queryNodeJS:从 SQL 查询中获取 JSON
【发布时间】:2020-07-31 08:53:14
【问题描述】:

我是 SQL 新手。我有一个包含两个表的数据库:用户和集合。 表“用户”存储应用程序的用户,而“集合”存储项目集合。每个集合归一个用户所有。

我需要获取包含集合及其所有者的 JSON 对象。

例如:

[
{
  "collection_id": 23,
  "collection_name": "The Beatles Albums"
  "owner": {
      "user_id": 5,
      "first_name": "John",
      "last_name": "Doe"
   }
}
]

这是我尝试过的:

router.get('/collections/', (req, res) => {
    mysqlconnection.query('SELECT * FROM collections INNER JOIN users ON collections.OwnerID = users.id WHERE collections.OwnerID = users.id ', (err, rows, fields) => {
        if(!err) {
            res.json(rows);
        } else {
            console.log(err);
        }
    })
})

这就是我得到的:

[
{
  "collection_id": 23,
  "collection_name": "The Beatles Albums",
  "owner": 5,
  "user_id": 5,
  "first_name": "John",
  "last_name": "Doe"
}
]

我是 SQL 新手。非常感谢任何帮助。

【问题讨论】:

    标签: javascript mysql node.js json api-design


    【解决方案1】:

    我相信 MYSQL JSON_OBJECT 可以解决您的问题。尝试为此更改您的查询:

    SELECT 
      JSON_ARRAYAGG(
        JSON_OBJECT(
          'collection_id', collections.collection_id, 
          'collection_name', collections.collection_name,
          'owner', JSON_OBJECT(
              'user_id', users.user_id, 
              'first_name', users.first_name, 
              'last_name', users.last_name
          )
        )
      ) 
    FROM 
      collections 
    
    INNER JOIN 
      users 
    
    ON collections.OwnerID = users.id 
    
    WHERE collections.OwnerID = users.id '
    

    【讨论】:

    • 非常感谢您的回答,SQL 查询输出嵌套的 JSON。但是,我在响应请求时无法正确获取它。这是我在控制台中得到的:JSON_OBJECT('collection_id', collections.ID, 'collection_name', collections.Name, 'owner', JSON_OBJECT('first_name', users.first_name, 'last_name', users.last_name, 'email', users.email, 'location', users.location)): "{"owner": {"email": "joes@gmail.com", "location": "Boston, USA", "last_name": "Doe", "first_name": "John"}, "collection_id": 1, "collection_name": "Lorem ipsum"}" 有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2019-12-26
    相关资源
    最近更新 更多