Node.js+;Postgres多重查询和json对象

Node.js+;Postgres多重查询和json对象,node.js,postgresql,Node.js,Postgresql,我有那些桌子: 汽车[idcar,名称,品牌,颜色] 可选[idoptional,idcar,name] 我需要执行此树查询并返回如下对象: [ { idcar: '1', name: 'ASTRA', surname: 'OPEL', color: 'red', optional : [ { idoptional: '12', name: 'LED Lights' }, {idoptional: '13', name: 're

我有那些桌子: 汽车[idcar,名称,品牌,颜色] 可选[idoptional,idcar,name]

我需要执行此树查询并返回如下对象:

[
  {  idcar: '1', 
     name: 'ASTRA', 
     surname: 'OPEL', 
     color: 'red', 
     optional : [
       { idoptional: '12', name: 'LED Lights' }, {idoptional: '13', name: 'retrocamera'}
     ]
  },
  {  idcar: '2', 
     name: 'FIAT', 
     surname: 'PUNTO', 
     color: 'white', 
     optional : [
       { idoptional: '16', name: 'SportPack' }, {idoptional: '13', name: 'retrocamera'}
     ]
  } 
]
我有以下代码:

const getCars = (request, response) => {
   pool.query('SELECT * FROM cars', (error, results) => {
     if (error) {
       throw error
     }
     response.status(200).json(results.rows)
   })
}

但我有两个分开的json。。。我只需要一个对象(Postgres 9.4+解决方案)

看起来你需要的是

  • cars和optionals表的连接
  • 使用

  • 下面是一个工作示例:

    i’s postgres 9.0:(在这种情况下,您最好的选择可能是执行以下操作,然后在节点中迭代结果(可能使用
    reduce
    ),以创建所需的最终数组
    const getOptionals = (request, response) => {
    const id = parseInt(request.params.id)
      pool.query('SELECT * FROM optionals WHERE idcar= $1', [id], (error, results) => {
        if (error) {
           throw error
        }
        response.status(200).json(results.rows)
      })
    }