指定SELECT列时,pg-promise中的未分析行

时间:2018-11-27 10:58:53

标签: node.js postgresql pg-promise

为什么pg-promise在用SELECT * ...查询时返回一个已解析的对象,但是在指定SELECT (given_name, family_name, photo) ...的选择列时却返回了一个未解析的行?

  • 选择所有列:

    db.oneOrNone(`SELECT * FROM $1~ WHERE id=$2`,[psql.tables.user, uid]);
    > {"id":"1","given_name":"Michael","family_name":"Douglas","email":"mike.dougly@douglas.com","password":"9511393558AC7202E61EB7BA9A2D3FC1FA9CA151AFF4271C1475BD11A7BE5DC72DC8E0B2E8EA3D44DA476DB43728E1A2A4BCB08A63B2E724603B9EEBD268CE5A","birthdate":"1978-01-01T00:00:00.000Z","photo":"https://somefakewebsite.com/dougly.jpg"}
    
  • 选择列的子集:

    db.oneOrNone(`SELECT (given_name, family_name, photo) FROM $1~ WHERE id=$2`,[psql.tables.user, uid]);
    > {"row":"(Michael,Douglas,https://somefakewebsite.com/dougly.jpg)"}
    

是否有一种方法可以告诉pg-promise像第一种情况一样解析列名?

1 个答案:

答案 0 :(得分:1)

  

...指定选择列时返回未解析的行

您不仅要指定列,还要将它们放在括号中,这告诉PostgreSQL返回元组,这就是您要得到的。而且,如果您在pgAdmin中运行查询,则会看到相同的内容。

  

是否有一种方法可以告诉pg-promise像第一种情况一样解析列名?

删除括号,就是这样。