postgresql构建_json_对象返回

postgresql构建_json_对象返回,json,postgresql,Json,Postgresql,postgesql返回json_build_对象作为每个分组json数组的父对象,如下所示: { "status": "success", "stories": [{ "json_build_object": { "CNN": [] } }, { "json_build_object": { "FOX": [] } }, {

postgesql返回json_build_对象作为每个分组json数组的父对象,如下所示:

{
  "status": "success",
  "stories": [{
        "json_build_object": {
          "CNN": []
        }
      },
      {
        "json_build_object": {
          "FOX": []
        }
      },
      {
        "json_build_object": {
          "Huffpost": []
        }
      },...
 stories:
  CNN: [],
  FOX: []...
Postgresql将“json_build_object”作为键返回。 是否可以替换为group by返回的stories.source值

SELECT json_build_object(source, json_agg(stories.*))
FROM stories
GROUP BY stories.source
ORDER BY source;
最佳解决方案是这样的响应:

{
  "status": "success",
  "stories": [{
        "json_build_object": {
          "CNN": []
        }
      },
      {
        "json_build_object": {
          "FOX": []
        }
      },
      {
        "json_build_object": {
          "Huffpost": []
        }
      },...
 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;
}
函数转换(故事){
常数res={};
for(设i=0;i
pg promise不会修改它接收到的数据。好吧,那么json\u build\u object属性是如何添加的呢?我注意到在使用db.func()语法时也会发生这种情况。这是从查询中得到的结果。这完全超出了pg-PROMICE的范围。感谢您的二次澄清!已将原始帖子更新为特定于postgresql的帖子。谢谢谢谢Vitaly,这就是我计划在没有找到SQL选项的情况下所做的。我弄明白后会发布解决方案。有人弄明白了吗?我自己也遇到了同样的问题。