postgesql将json_build_对象作为每个分组的json数组的父对象返回,如下所示:
{
"status": "success",
"stories": [{
"json_build_object": {
"CNN": []
}
},
{
"json_build_object": {
"FOX": []
}
},
{
"json_build_object": {
"Huffpost": []
}
},...
Postgresql返回“json_build_对象”作为键。
是否可以替换为group by返回的stories.source值?
SELECT json_build_object(source, json_agg(stories.*))
FROM stories
GROUP BY stories.source
ORDER BY source;
最佳解决方案是这样的响应:
stories:
CNN: [],
FOX: []...
我肯定我错过了在Postgresql中返回JSON的最佳实践。。。
最佳答案
在SQL中必须有一种方法可以做到这一点,但是由于现在缺少这种方法,您可以将stories
属性转换为正确的对象:
function convert(stories) {
const res = {};
for (let i = 0; i < stories.length; i++) {
const obj = stories[i].json_build_object;
const name = Object.keys(obj)[0];
res[name] = obj[name];
}
return res;
}
关于json - PostgreSQL build_json_object返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45203307/