2017-01-10 7 views
0

array_aggを使用して値を配列にグループ化しています。行に対する出力は次のようになります。私は、ノードでの結果を通じて、ループにarray_aggの出力を配列ではなく文字列に変換します

row.values.forEach(...をしようとしているが、それはtypeof row.valuesがStringであるためvalues.forEachは、関数ではありませんと言う

row: anonymous { values: '{(1),(2)}' } 

私はarray_aggを使用しています。なぜ出力が文字列であり、どのように配列に変換できますか?

+1

をPostgresのワイヤプロトコルは、印刷可能な文字列としてほとんどすべてを表しています。ネイティブデータ型(int、float、booleanなど)に変換するのはクライアントドライバの責任です。配列は比較的まれであるため、ほとんどのドライバーには組み込みハンドルがありません。残念ながら、文字列形式は解析するのが難しいです。 1つの回避策は 'array_to_json'を使ってより簡単に解析可能なものを得ることです。 (私はこのドライバーについて特に知らないので、答えていない。) – IMSoP

答えて

0

配列に整数が必要な場合は、正規表現を使用して、(\d+)の一致をループすることができます。

もう1つの方法は、array_to_stringを使用して、コンテンツに表示されない値、改行\n(例:array_to_string(some_array_content, E'\n'))を使用して結合し、後で分割します。

一度他の方法で配列を取得すると、forEachが動作します。

はまた、私はSequelizeは、配列を扱うことができると信じて:http://docs.sequelizejs.com/en/v3/api/datatypes/#array

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 | 
+-------+ 
関連する問題