gpt4 book ai didi

json - PostgreSQL 和 nodejs/pg,返回嵌套的 JSON

转载 作者:行者123 更新时间:2023-11-29 12:58:23 25 4
gpt4 key购买 nike

我将 PostgreSQL 与 nodejs 和 pg 一起使用。一切正常,但我想将 PostgreSQL 的结果输出为嵌套的 json - 就像我在使用 MongoDB 或类似工具一样。

我来自 PostgreSQL 的 2 个表是:

portfolio (id int, name text)

cars (portfolio_id int, name text);

是否有返回具有以下结构的 JSON 对象的“正确”方法:

{
{ name: 'Portfolio #1', cars: { name: 'Car #1', name: 'Car #2' },
{ name: 'Portfolio #2', cars: { name: 'Car #3' }
}

我在nodejs/pg中查询数据库的一般方式是:

client.query('SELECT ...', [params], function(err, result) {
done();
if (err) {
res.status(500).json({ error: err });
} else {
res.json({ portfolios: result.rows });
}
});

最佳答案

在 PostgreSQL 中,您可以构建以下 JSON 对象:

[
{ "name": "Portfolio #1", "cars": [ "Car #1", "Car #2" ] },
{ "name": "Portfolio #2", "cars": [ "Car #3" ] }
]

您可以使用以下查询从表中构建对象:

select array_to_json(array(
select row_to_json(n)
from portfolio p
left join lateral (select p.name, array(select name from cars where portfolio_id = p.id) as cars) n on true
))

并且包含 cars.votes 字段:

select array_to_json(array(
select row_to_json(n)
from portfolio p
left join lateral (select p.id, p.name, array_to_json(array(
select row_to_json((select a from (select c.name, c.votes) a))
from cars c
where portfolio_id = p.id)) as cars) n on true
))

关于json - PostgreSQL 和 nodejs/pg,返回嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com