从Postgres以字符串形式返回的枚举类型数组

时间:2016-01-06 23:02:38

标签: node.js postgresql node-postgres

给定一个自定义枚举: CREATE TYPE vehicle AS ENUM ('car', 'truck', 'bicycle');

这样一张桌子:

CREATE TABLE vehicle_events (
  timestamp timestamptz NOT NULL DEFAULT current_timestamp,
  labels vehicle[] NOT NULL,
  mentions int4[] NOT NULL DEFAULT '{}'
);

从我们的节点应用程序中查询时,如下所示:

SELECT * FROM vehicle_events;

这样返回一个json结构:

[{"timestamp": "January, 06 2016 23:04:56", "labels": "{'car'}", "mentions": [1,2,3,4]}]

我的问题是,为什么标签数组会以字符串形式返回(另请注意,提到基本类型的数组不是)?这是因为它是一个ENUM的数组吗?如果是这样,我怎么能强制它成为常规数组呢?为什么postgres以这种方式返回它?

sqlfiddle链接:http://sqlfiddle.com/#!15/637ce/1

1 个答案:

答案 0 :(得分:4)

这就是postgres数组如果没有被解释为数组的样子。如果在查询中使用to_json(),则数组将正确返回。

赞:SELECT to_json(labels) as labels FROM vehicle_events;