Node.jsからPostgreSQLに接続する(node-postgres)

Node.jsからPostgreSQLに接続し、データの登録や取得を試してみます。


データベース



PostgreSQL 10.3を使用しました。
事前に「sample」というデータベースを作成。
以下のテーブルを作成しておきました。

CREATE TABLE test (
id int,
value text
)



node-postgres



接続にはnode-postgresを利用しました。
node-postgres

npmでライブラリをインストールします。


$ npm install pg



pg@7.4.1がインストール出来ました。





データベース接続



今回接続するデータベースは

ホスト:192.168.1.101
ユーザー:pgadmin
パスワード:P@ssw0rd
データベース:sample


です。

こちらを参考に、サンプルを作成してみます。
https://node-postgres.com/features/connecting


  1. const { Client } = require('pg')
  2. const client = new Client({
  3.     user: 'pgadmin',
  4.     host: '192.168.1.101',
  5.     database: 'sample',
  6.     password: 'P@ssw0rd',
  7.     port: 5432,
  8. })
  9. client.connect()
  10. client.query('SELECT NOW()', (err, res) => {
  11.     console.log(err, res)
  12.     client.end()
  13. })




実行結果


$ node sample.js
null Result {
command: 'SELECT',
rowCount: 1,
oid: null,
rows: [ anonymous { now: 2018-04-09T07:29:16.760Z } ],
fields:
[ Field {
     name: 'now',
     tableID: 0,
     columnID: 0,
     dataTypeID: 1184,
     dataTypeSize: 8,
     dataTypeModifier: -1,
     format: 'text' } ],
_parsers: [ [Function: parseDate] ],
RowCtor: [Function: anonymous],
rowAsArray: false,
_getTypeParser: [Function: bound ] }




ちょっとわかりにくいですが、ちゃんと実行できたようです。
すべての情報でなく、レコードの内容だけ表示してみます。


  1. const { Client } = require('pg')
  2. const client = new Client({
  3.     user: 'pgadmin',
  4.     host: '192.168.1.101',
  5.     database: 'sample',
  6.     password: 'P@ssw0rd',
  7.     port: 5432,
  8. })
  9. client.connect()
  10. client.query('SELECT NOW()', (err, res) => {
  11.     //console.log(err, res)
  12.     console.log(res.rows[0])
  13.     client.end()
  14. })




実行結果


$ node sample.js
anonymous { now: 2018-04-09T07:30:28.963Z }




ちゃんと時間が取得できていますね。




データの登録



作成したtestテーブルに値を登録してみます。
こちらを参考にしました。
https://node-postgres.com/features/queries


  1. const { Client } = require('pg')
  2. const client = new Client({
  3.     user: 'pgadmin',
  4.     host: '192.168.1.101',
  5.     database: 'sample',
  6.     password: 'P@ssw0rd',
  7.     port: 5432,
  8. })
  9. client.connect()
  10. const sql = "INSERT INTO test (id, value) VALUES ($1, $2)"
  11. const values = [1, '日本語登録テスト']
  12. client.query(sql, values)
  13.     .then(res => {
  14.         console.log(res)
  15.         client.end()
  16.     })
  17.     .catch(e => console.error(e.stack))



$[数字]がプレースフォルダーになるようです。

実行結果


$ node sample.js
Result {
command: 'INSERT',
rowCount: 1,
oid: 0,
rows: [],
fields: [],
_parsers: [],
RowCtor: null,
rowAsArray: false,
_getTypeParser: [Function: bound ] }




ちゃんとデータが登録されました。


sample=# select * from test;
id |     value    
----+------------------
1 | 日本語登録テスト
(1 行)







データの検索



登録したデータを検索してみます。
こちらを参考にしました。
https://node-postgres.com/features/queries


  1. const { Client } = require('pg')
  2. const client = new Client({
  3.     user: 'pgadmin',
  4.     host: '192.168.1.101',
  5.     database: 'sample',
  6.     password: 'P@ssw0rd',
  7.     port: 5432,
  8. })
  9. client.connect()
  10. const query = {
  11.     name: 'fetch-sample',
  12.     text: 'SELECT * FROM test WHERE id = $1',
  13.     values: [1],
  14. }
  15. client.query(query)
  16.     .then(res => {
  17.         console.log(res.rows[0])
  18.         client.end()
  19.     })
  20.     .catch(e => console.error(e.stack))




実行結果


$ node sample.js
anonymous { id: 1, value: '日本語登録テスト' }





【参考URL】

https://node-postgres.com/
関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ