【发布时间】:2016-01-09 05:31:21
【问题描述】:
给定一个自定义枚举:
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,2,3,4]"将是一个字符串,而[1,2,3,4]不是。是什么让你认为它是一个字符串?您自己的代码显示相反。 -
标签数组作为字符串返回,而不是提及数组:“{'car'}”
-
可能是 node-postgres 中的另一个错误。只需通过 pg-types 为枚举添加您自己的转换器 - 这很容易。
标签: node.js postgresql node-postgres