枚举类型的数组作为字符串从 Postgres 返回
Array of type enum coming back as string from Postgres
给定一个自定义枚举:
CREATE TYPE vehicle AS ENUM ('car', 'truck', 'bicycle');
还有一个 table 像这样:
CREATE TABLE vehicle_events (
timestamp timestamptz NOT NULL DEFAULT current_timestamp,
labels vehicle[] NOT NULL,
mentions int4[] NOT NULL DEFAULT '{}'
);
当像这样从我们的节点应用程序查询时:
SELECT * FROM vehicle_events;
这个returns一个json结构如下:
[{"timestamp": "January, 06 2016 23:04:56", "labels": "{'car'}", "mentions": [1,2,3,4]}]
我的问题确实是,为什么标签数组作为字符串返回(另请注意基类型的提及数组不是)?这是因为它是一个ENUM
的数组吗?如果是这样,我怎样才能将它强制为常规数组?为什么 postgres 以这种方式返回它?
sqlfiddle link: http://sqlfiddle.com/#!15/637ce/1
这就是 postgres 数组在不被解释为数组时的样子。如果您在查询中使用 to_json(),数组将适当地 return。
赞:SELECT to_json(labels) as labels FROM vehicle_events;
给定一个自定义枚举:
CREATE TYPE vehicle AS ENUM ('car', 'truck', 'bicycle');
还有一个 table 像这样:
CREATE TABLE vehicle_events (
timestamp timestamptz NOT NULL DEFAULT current_timestamp,
labels vehicle[] NOT NULL,
mentions int4[] NOT NULL DEFAULT '{}'
);
当像这样从我们的节点应用程序查询时:
SELECT * FROM vehicle_events;
这个returns一个json结构如下:
[{"timestamp": "January, 06 2016 23:04:56", "labels": "{'car'}", "mentions": [1,2,3,4]}]
我的问题确实是,为什么标签数组作为字符串返回(另请注意基类型的提及数组不是)?这是因为它是一个ENUM
的数组吗?如果是这样,我怎样才能将它强制为常规数组?为什么 postgres 以这种方式返回它?
sqlfiddle link: http://sqlfiddle.com/#!15/637ce/1
这就是 postgres 数组在不被解释为数组时的样子。如果您在查询中使用 to_json(),数组将适当地 return。
赞:SELECT to_json(labels) as labels FROM vehicle_events;