nodejs(v6.5)+express(v4.14)の構成で、postgreSQLのデータを取得して返す、APIのサンプルを作ろうとしているのですが、上手く行きません。
以下のようなソースで、pg-promise(v7.0.2)モジュールを使用して、postgreSQLに接続しています。
db.any('select * from ・・・
でクエリを投げて、 console.log(data[0]);
の中身を見る限り、テーブルの値は取れています。
しかし、res.status(200)
から、「Error: Can't set headers after they are sent.」が発生していて、レスポンスを返せません。
調べたところ、このエラーは既にレスポンスを投げているところに、再度レスポンスを投げようとすると発生するようですが、見た限りそのような動きが見られません。
何か原因について御存知の方がいましたら、ご教示いただけないでしょうか。
宜しくお願いします。
js
1'use strict'; 2 3/* node.jsモジュールの読み込み */ 4const express = require('express'); 5const router = express.Router(); 6const config = require('config'); 7const pgp = require('pg-promise')(); 8 9// postgreSQLの値を返すAPI 10router.get('/test', (req, res, next) => { 11 12 // postgreSqlの接続情報 13 let connection = { 14 host : 'localhost', 15 port : 5432, 16 database : 'test', 17 user : 'posgreuser', 18 password : 'pospospos' 19 }; 20 let db = pgp(connection); 21 22 23 db.any('select * from TEST_MASTER where key1= $1','aaa') 24 .then((data) => { 25 console.log(data[0]); 26 res.status(200) 27 .send(JSON.stringify({ 28 status : 'success', 29 results : data[0].key2, 30 })); 31 }) 32 .catch((e) => { 33 e.param = 'ng'; 34 next(e); 35 }) 36 .finally(() => { 37 console.log('fin'); 38 pgp.end(); // 接続プールの切断 39 }); 40}); 41 42module.exports = router; 43
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/23 14:39