【发布时间】:2016-01-06 12:41:40
【问题描述】:
我正在编写一个 node.js 应用程序,它使用 pg 包来访问 PostgreSQL 数据库。我遇到的问题是,如果我执行这样的查询:
select * from posts p inner join blogs b on b.id = p.blog_id
当我得到结果时,它们都在同一个命名空间中,因此 blogs 表中重复的任何字段都会覆盖 posts 表中的字段。
我的问题是,将这些结果绑定到对象的最佳方式是什么?
理想情况下,我想要这样的结果:
{
id: 1,
name: 'A post name',
published_at: (some date object),
blog_id: 1,
b: {
id: 1,
name: 'A blog name'
}
}
但我愿意接受任何方便的解决方案,除了手动为每一列添加别名。
【问题讨论】:
-
数据到对象的映射是由 ORM-s 完成的,而 node-postgres 不是。您必须手动完成。
-
@vitaly-t:我不一定需要它成为一个对象。基本上我只希望所有返回的表都被命名空间,这样我就可以访问所有字段而无需别名。
-
您找到解决方法了吗?我遇到了同样的问题,但似乎没有任何回应能解决这个问题。
pg结果包含一个属性rows用于合并结果,fields用于它们是不同的(但它只是列的名称,没有值)。
标签: javascript json node.js postgresql