如何将Postgres数据拆分为JSON /对象或Express的易于使用的格式

时间:2018-12-18 15:44:32

标签: postgresql express pg-promise

我正在使用pg-promise来简化Express和Postgres数据库之间的请求。

使用pg-promise的any

db.any('select * from blog')
  .then(function (data) {
    console.log(data);
  })
  .catch(function (error) {
    console.log('ERROR:', error);
  });

Postgres表中只有一行,因此上面的查询从Postgres获取了一块数据,当输出到终端时,它看起来像这样:

[ { id: 1,
    date: '2018-12-17',
    title: 'Here is a Title',
    article: "Okay, there's not much here yet.",
    img1: null,
    img2: null,
    img3: null,
    keywords: 'news' } ]

为了将这些数据分解为可用的位,然后可以将它们分配给Express中的值,我尝试在此数据上使用JSON.parse()。我真的不知道从这个过程中会得到什么。

db.any('select * from blog')
  .then(function (data) {
    data = JSON.parse(data); // attempting to parse the Postgres data
    console.log(data);
  })

发生错误:

ERROR: SyntaxError: Unexpected token o in JSON at position 1

我也试图像对待对象一样调用此数据。

db.any('select * from blog')
  .then(function (data) {
    console.log(data);
    console.log(data.id); // attempting to get just the id from the data
  })

输出到终端的方式为:

undefined

如何在Express等js环境中使用这些数据?不确定是否会有所作为,但我正在尝试使用Pug将所有内容模板化到前端。

2 个答案:

答案 0 :(得分:2)

select查询返回对象数组,在您的情况下,数组中的每个元素对应于表中的一行(博客),对象中的每个键对应于表列。

我不确定您为什么要尝试对其进行JSON解析,因为JSON需要一个对象,并且它无法解析数组。

答案 1 :(得分:0)

尝试JSON.parse(JSON.stringify(data));