// Node.js와 PostgreSQL 연결하기
1. node.js에서 'pg' 패키지 설치
npm install pg
2. 데이터베이스 연결 정보 저장
DATABASE_USER=설정한 name
DATABASE_HOST=localhost
DATABASE_NAME=설정한 database
DATABASE_PASSWORD=설정한 password
DATABASE_PORT=5432
- 중요한 정보이기 때문에 .env 파일에 선언해서 관리한다.
3. 데이터베이스 연결 구성
import { Pool } from 'pg';
const pool = new Pool({
user: process.env.DATABASE_USER,
host: process.env.DATABASE_HOST,
database: process.env.DATABASE_NAME,
password: process.env.DATABASE_PASSWORD,
port: parseInt(process.env.DATABASE_PORT, 10),
});
4. 데이터베이스 연결
const client = await pool.connect();
5. SQL 쿼리 실행
const result = await client.query(
//쿼리
);
- result.rows로 결과를 확인할 수 있다. (배열)
6. client 연결 종료
client.release();
7. client에 응답 전송
res.status(201).json(반환할객체);
import { Pool } from 'pg';
const pool = new Pool({
user: process.env.DATABASE_USER,
host: process.env.DATABASE_HOST,
database: process.env.DATABASE_NAME,
password: process.env.DATABASE_PASSWORD,
port: parseInt(process.env.DATABASE_PORT, 10),
});
async function handler(req, res) {
if (req.method === 'POST') {
const { title, image, address, description } = req.body;
try {
const client = await pool.connect();
const result = await client.query(
'INSERT INTO meetup(title, image, address, description) VALUES($1, $2, $3, $4) RETURNING *',
[title, image, address, description],
);
console.log(result.rows);
client.release();
// 응답을 클라이언트에 보냄
res.status(201).json({ message: 'Meetup inserted!' });
} catch (err) {
console.error('Database connection error', err.stack);
res.status(500).json({ message: 'Database connection failed' });
}
} else {
res.setHeader('Allow', ['POST']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
※ 쿼리 작성 규칙
- SQL Inject 예방을 위해 항상 매개변수화된 쿼리를 사용해야 한다.
// 백틱 사용
const query = 'INSERT INTO users(name, tel) VALUES($1, $2) RETURNING *';
const user = ['Hana', '01012345678'];
const { rows } = await client.query(query, user);
//query 단순화
const { rows } = await client.query('INSERT INTO users(name, tel) VALUES($1, $2) RETURNING *', ['Hana', '01012345678']);
- SQL 쿼리는 단일 문자열로 작성한다.
const query = `
SELECT *
FROM users
WHERE name = $1;
`;
'데이터베이스(DB) > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] UUID 생성하기 (0) | 2024.03.01 |
---|---|
[PostgreSQL] INTERVAL (0) | 2023.11.15 |
스프링 부트와 PostgreSQL 연동 (0) | 2023.08.14 |
PostgreSQL 설치 및 환경설정 (0) | 2023.08.07 |