我使用array_agg
将值分组到数组中。行的输出是:
row: anonymous { values: '{(1),(2)}' }
我试图在Node中循环结果,
row.values.forEach(...
但它说values.forEach
不是函数,因为typeof row.values
是String。
我使用的是array_agg,为什么输出是字符串,如何将其转换为数组?
答案 0 :(得分:0)
如果你期望数组中的整数,你可以使用正则表达式并循环遍历(\d+)
的匹配。
另一种方法是使用array_to_string
并使用未在内容中显示的值进行连接,换行符\n
例如:array_to_string(some_array_content, E'\n')
,然后稍后拆分。
一旦你以某种方式将它变成数组,forEach
就可以了。
另外,我相信Sequelize可以处理数组:http://docs.sequelizejs.com/en/v3/api/datatypes/#array
答案 1 :(得分:0)
可以使用:unnest
将数组转换为一组行create temp table t (name text);
insert into t values ('name1'),('name2'),('name3'),('name4');
select unnest(array_agg(name)) as aname from t
+-------+
| aname |
+-------+
| name1 |
+-------+
| name2 |
+-------+
| name3 |
+-------+
| name4 |
+-------+
答案 2 :(得分:0)
我也遇到了这个问题,并且由于需要返回固定数量的行,所以嵌套也不是一种选择,我不能保证我的内容不会包含,
或括号,正则表达式解决方案具有挑战性。
我发现最好的解决方案是使用json_agg
而不是array_agg
。 (请参见documentation)这将以JSON格式返回结果,并且节点自动将其解释为javascript对象,因此您可以使用.forEach
,而无需进行任何转换。