Innovating today, leading tomorrow

OpenSQL_Technical Guide
[Opensql] Interface(node.js) 설치 및 사용방법

[Opensql] Interface(node.js) 설치 및 사용방법

1. Node.js 개요

Node.js 란?

Node.js는 크로스 플랫폼인 자바스크립트 런타임이며 구글 크롬 V8 자바스크립트 엔진을 브라우저 외부에서 실행합니다.
– Node.js 공식문서 

테스트환경

Linux

OS CentOS 7.6
PostgreSQL Version PostgreSQL 14.9
node.js Version v16.20.2

Window

OS Windows10
PostgreSQL Version PostgreSQL 14.9
node.js version v20.10.0

Interface(node.js) 설치 및 사용방법

Linux에 node.js 설치하기

# yum install nodejs
# yum install npm

Linux에 node.js , npm을 설치합니다.

# pwd
/node.js
# cd /node.js
# npm init -y
Wrote to /nodejs/package.json:{
"name": "nodejs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

프로젝트를 진행할 디렉토리를 생성 및 지정 후, npm init 명령어를 실행합니다. 

npm init은 Node.js 프로젝트를 초기화하는데 사용하는 명령어로 실행결과로 package.json 파일을 생성합니다. package.json은 프로젝트를 관리하는데 필요한 파일로 프로젝트의 정보, 설치한 모듈들의 의존성을 관리합니다.  -y 옵션은 프로젝트의 기본적인 정보 및 의존성 관리에 필요한 내용이 기본 값으로 설정 하도록 합니다.

 

package.json

  • name : 프로젝트의 이름으로 NPM에게 패키지를 검색할때 사용됩니다
  • version : 프로젝트 버전입니다.
  • description: 프로젝트에 대한 설명입니다
  • main: 패키지를 로드할때 사용되는 모듈 이름입니다.
  • script: 프로젝트 스크립트 명령을 정의합니다. npm start, npt test등의 명령을 설정 할 수 있습니다. 
  • keywords: 패키지 관련 키워드를 배열로 제공하며 npm 웹사이트나 npm search에서 패키지를 찾는데 도움을 줍니다.
  • author: 패키지의 저자 정보를 제공합니다. 이름, 이메일, 웹사이트 등을 포함 할 수 있습니다
  • license:  패키지에 적용된 라이선스를 명시합니다
# npm install pg

npm install pg 명령어를 이용하여 Node.js용 Postgresql 클라이언트인 pg를 설치합니다.

 

# vi pgtest.js
// pg 모듈로부터 Client 객체를 가져옵니다.
const { Client } = require('pg');

// 데이터베이스 연결을 위한 클라이언트 객체를 생성합니다.
const client = new Client({

user:'[Database User]', // 데이터베이스 유저명
host:'[IP]', // 데이터베이스 서버주소
password:'[password]', // 데이터베이스 비밀번호
database: '[Database]', // 접속 할 데이터베이스
port:'[Port]' // 접속 포트
});

// 데이터베이스에 연결합니다.
client.connect(err =>{

if(err) console.log(err); // 연결 오류가 있을 경우 오류를 출력합니다.
else{
console.log("connected!!"); // 연결 성공 시 메시지를 출력합니다.
}
});

// 데이터베이스에 대한 SELECT 쿼리를 실행합니다.
client.query("select * from test;",(err,res)=>{ // 실행할 쿼리

if(err != null){
console.log(err);
}
console.log(res.rows); // 쿼리 결과의 행(row)을 출력합니다.
client.end(); // 데이터베이스 연결을 종료합니다.
});

 

PostgreSQL 데이터베이스에 연결하고 쿼리를 실행하는 javascript 예제입니다.
pg 모듈로 부터 Clinet 객체를 가져온후 데이터베이스 연결을 위한 클라이언트 객체를 생성합니다.
클라이언트 객체에는 데이터베이스 유저명, 데이터베이스 서버주소, 데이터베이스 비밀번호, 접속할 데이터베이스, 접속 포트를 담은 내용이 포함되어있어야 합니다.
생성 된 클라이언트 객체를 데이터베이스와 연결합니다. 이때 실행할 쿼리를 작성합니다. 
쿼리 결과를 행으로 출력 후 데이터베이스 연결을 종료합니다.

 

# node pgtest.js
connected!!
[ { n: 1 }, { n: 2 } ]

node pgtest.js 명령어를 통해 데이터베이스와 연결 및 쿼리 실행이 정상적으로 작동하는지 확인합니다.

 

$ psql -h [IP] -U [Database User] -d [Database]
암호:
psql (14.9)
도움말을 보려면 "help"를 입력하십시오.

test=# select * from test;
n
---
1
2
(2개 행)

node pgtest.jspsql명령어로 출력한 값의 일치 여부를 확인해봅니다.

 

Windows에 node.js 설치하기

https://nodejs.org/en에서 node.js 설치 진행합니다.
윈도우의 경우, 환경변수가 바로 적용되지 않기 때문에, 재부팅 혹은 cmd 관리자 권한으로 접속 후 아래의 명령어 실행합니다.

taskkill /im explorer.exe
explorer.exe

npm init -y

Wrote to C:Userstmaxnodejspackage.json:

{
"name": "nodejs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

프로젝트를 진행할 디렉토리를 생성 및 지정 후, npm init 명령어를 실행합니다. 

 

npm init은 Node.js 프로젝트를 초기화하는데 사용하는 명령어로 실행결과로 package.json 파일을 생성합니다. package.json은 프로젝트를 관리하는데 필요한 파일로 프로젝트의 정보, 설치한 모듈들의 의존성을 관리합니다.  -y 옵션은 프로젝트의 기본적인 정보 및 의존성 관리에 필요한 내용이 기본 값으로 설정 하도록 합니다.

 

package.json

  • name : 프로젝트의 이름으로 NPM에게 패키지를 검색할때 사용됩니다
  • version : 프로젝트 버전입니다.
  • description: 프로젝트에 대한 설명입니다.
  • main: 패키지를 로드할때 사용되는 모듈 이름입니다
  • script: 프로젝트 스크립트 명령을 정의합니다. npm start, npm test등의 명령을 설정 할 수 있습니다. 
  • keywords: 패키지 관련 키워드를 배열로 제공하며 npm 웹사이트나 npm search에서 패키지를 찾는데 도움을 줍니다.
  • author: 패키지의 저자 정보를 제공합니다. 이름, 이메일, 웹사이트 등을 포함 할 수 있습니다
  • license:  패키지에 적용된 라이선스를 명시합니다

>npm install pg

up to date, audited 17 packages in 896ms

found 0 vulnerabilities

npm install pg 명령어를 이용하여 Node.js용 Postgresql 클라이언트인 pg를 설치합니다.

 

# pgtest.js
const { Client } = require('pg');

const client = new Client({
user:'[Database User]', // 데이터베이스 유저명
host:'[IP]', // 데이터베이스 서버주소
password:'[password]', // 데이터베이스 비밀번호
database: '[Database]', // 접속 할 데이터베이스
port:'[port]' // 접속 포트
});

client.connect(err =>{
if(err) console.log(err);
else{
console.log("connected!!");
}
});

client.query("select * from test;",(err,res)=>{ // 실행할 쿼리
if(err != null){
console.log(err);
}
console.log(res.rows);
client.end();
});
~

PostgreSQL 데이터베이스에 연결하고 쿼리를 실행하는 javascript 예제입니다.
pg 모듈로 부터 Clinet 객체를 가져온후 데이터베이스 연결을 위한 클라이언트 객체를 생성합니다.
클라이언트 객체에는 데이터베이스 유저명, 데이터베이스 서버주소, 데이터베이스 비밀번호, 접속할 데이터베이스, 접속 포트를 담은 내용이 포함되어있어야 합니다.
생성 된 클라이언트 객체를 데이터베이스와 연결합니다. 이때 실행할 쿼리를 작성합니다. 
쿼리 결과를 행으로 출력 후 데이터베이스 연결을 종료합니다.

 

>node pgtest.js
connected!!
[ { n: 1 }, { n: 2 } ]

node pgtest.js 명령어를 통해 데이터베이스와 연결 및 쿼리 실행이 정상적으로 작동하는지 확인합니다.

 

>psql -h [IP] -U [Database User] -d [Database]
Type "help" for help.

test=# select * from test;
n
---
1
2
(2 rows)

node pgtest.jspsql명령어로 출력한 값의 일치 여부를 확인합니다.

 

광고성 정보 수신

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다.
내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보
  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
 

개인정보 수집 및 이용

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다. 내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보

  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
  •