NodeJS:从 SQL 查询中获取 JSON
Posted
技术标签:
【中文标题】NodeJS:从 SQL 查询中获取 JSON【英文标题】:NodeJS: Get JSON from SQL query 【发布时间】: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 新手。非常感谢任何帮助。
【问题讨论】:
【参考方案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""
有什么想法吗?以上是关于NodeJS:从 SQL 查询中获取 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Nodejs Mysql 获取 JSON 类型作为 JSON 而不是 String
创建从 linq 到 SQL 查询输出的特定 json 响应?