1

给定一个自定义枚举: 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

4

1 回答 1

5

如果 postgres 数组不被解释为数组,这就是它们的外观。如果您在查询中使用 to_json(),则数组将正确返回。

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

于 2016-01-06T23:11:49.497 回答