일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 객체지향
- 캡슐화
- npm
- 동적계획법
- AOP
- 다형성
- 클라우드
- bfs
- 메모이제이션
- Secret
- netlify
- dfs
- package
- 추상화
- DP
- mock
- CSS
- GOF
- github
- Solid
- MariaDB
- Java
- azure
- 서브셋폰트
- PostgreSQL
- dotenv
- git
- 상속
- 디자인 패턴
- process.env
Archives
- Today
- Total
이것저것 해보기🌼
Node.js + postgreSQL 연동 및 쿼리 실행 본문
1. postgreSQL을 설치하고, database 를 만든다.
2. database 안에 table을 만든다. (여기서는 users 라는 테이블)
3. Node.js 에서 새로운 프로젝트를 만든다.
4. pg 를 설치하고, 테스트 코드를 실행해본다.
import pg from 'pg'
const { Client } = pg
const client = new Client({
user: '[my id]',
password: '[password]',
database: '[database]',
})
await client.connect()
const res = await client.query('SELECT $1::text as message', ['Hello world!'])
console.log(res.rows[0].message) // Hello world!
await client.end()
이코드를 실행해서 문제없이 Hello, world! 가 뜨면 DB는 연결 완료!
5. 쿼리를 쉽게 실행하는 법
- npm install commander
- npm install prompts
import { Command } from 'commander'
const program = new Command()
import pg from 'pg'
import prompts from 'prompts'
const { Client } = pg
async function connect() {
const client = new Client({
user: '[USER]',
password: '[PASSWORD]',
database: '[DATABASE]',
})
await client.connect()
return client
}
program.command('list').action(async () => {
const client = await connect()
const query = `SELECT * FROM users`
const result = await client.query(query)
console.log(result.rows)
await client.end()
})
program.command('add').action(async () => {
const client = await connect()
const userName = await prompts({
type: 'text',
name: 'userName',
message: 'Provide a user name to insert',
})
const query = `INSERT INTO users (name) VALUES ($1::text)`
await client.query(query, [userName.userName])
await client.end()
})
program.command('remove').action(async () => {
const client = await connect()
const userName = await prompts({
type: 'text',
name: 'userName',
message: 'Provide a user name to delete',
})
await client.query(`DELETE FROM users WHERE name = $1::text`, [
userName.userName,
])
await client.end()
})
program.parseAsync()
예시 1) node main.js add
cli로 손쉽게 테이블에 데이터 insert가 가능해진다.
예시 2) node main.js remove
삭제도 마찬가지로 쉽게 가능하다.
주의할 점
SQL Injection 공격을 막기 위해서 column에 들어갈 값을 직접 `'${username}'` 으로 넣지 말고, $1::text 로 지정해야한다.
await client.query(`DELETE FROM users WHERE name = $1::text`, [
userName.userName,
])
여기까지 postgreSQL Node에서 실습해보았다.
'BE > Node.js' 카테고리의 다른 글
Sequelize migration 으로 안전하게 데이터베이스 스키마 변경하기 (2) | 2024.09.04 |
---|---|
Sequelize를 사용한 ORM 구현 (1) | 2024.09.04 |