[Node.js + PostgreSQL]Node.js 앱에서 PostgreSQL DB에 연결

쓰기



Node.js로 만든 앱에서 PostgreSQL DB에 연결하는 방법

전제 조건



접속하는 DB는 하기 기사에서 작성한 것을 이용한다.
[DB/SQL] 요건을 테이블에 떨어뜨리는 기법의 메모 쓰기(복식부기의 테이블 설계를 예로)

폴더 구성


NodeJSSampleApp
┣ app.js
┣ node_modules
┣ package-lock.json
┣ package.json
┣ public
┗ views
  ┗ journal.ejs

코드



app.js
const express = require('express');
const app = express();

app.use(express.static('public'));

var {Client} = require('pg');

var client = new Client({
    user: 'DB USER NAME', // DB のユーザー名を指定
    host: 'localhost',
    database: 'SampleApp',
    password: 'DB PASSWORD', // DB のパスワードを指定
    post: 5432
})

client.connect();

var query = 'select journal.id as 仕訳ID,journal.date as 日付, (select accounts_title.name from accounts_title where accounts_title.id = journal_details.debit_accounts_id) as 借方科目,journal_details.credit_amount as 借方金額,(select accounts_title.name from accounts_title where accounts_title.id = journal_details.credit_accounts_id) as 貸方科目,journal_details.credit_amount as 貸方金額,journal.memo as 摘要 from journal_details join journal on journal_details.journal_id = journal.id;';

app.get('/',(req,res)=>{

    client.query(query,(error,result)=>{
        console.log(result);
        res.render('journal.ejs',{results: result}); // results に格納した取得結果を journal.ejs で表示
        client.end();
    });

});

app.listen(3000);

views/journal.ejs
<html>
<head>
<title>複式簿記</title>
<link rel = "stylesheet" type="text/css" href = "/css/style.css">
<head>
<body>
<h1>複式簿記</h1>
<table>
<thead>
<tr>
<th>仕分ID</th>
<th>日付</th>
<th>借方科目</th>
<th>借方金額</th>
<th>貸方科目</th>
<th>貸方金額</th>
<th>摘要</th>
</tr>
</thead>
<% for(var i=0;i< results.rowCount;i++) {%>
<% var year = results.rows[i].日付.getFullYear(); %>
<% var month = results.rows[i].日付.getMonth() + 1; %>
<% var day = results.rows[i].日付.getDate(); %>
<tr>
<td><%= results.rows[i].仕訳id %></td>
<td><%= year + '/' + month + '/' + day %></td>
<td><%= results.rows[i].借方科目 %></td>
<td><%= results.rows[i].借方金額 %></td>
<td><%= results.rows[i].貸方科目 %></td>
<td><%= results.rows[i].貸方金額 %></td>
<td><%= results.rows[i].摘要 %></td>
</tr>
<% } %>
</table>

</body>
</html>

앱을 실행하고 브라우저에서 localhost:3000에 액세스


$ cd NodeJSSampleApp
$ node app.js

표시 결과



좋은 웹페이지 즐겨찾기