반응형
오라클DB를 웹 환경(node)에서 작업하기 위하여 NestJS에서 오라클DB와 연결 하였습니다.
작업환경 : node v16.19.1, nest v9.2
우선 npm 에서 'oracledb' 패키지를 설치받아줍니다. NestJs는 타입스크립트이기 때문에 @types/oracledb도 같이 받아줘서 타입에러가 나지 않도록 해줍니다.
참고로 제가 받은 버전입니다. 혹시 잘 안되시면 버전을 맞춰서 해보세요
"@types/oracledb": "^5.2.3",
"oracledb": "^5.5.0",
npm i @types/oracledb oracledb
오라클 패키지를 설치하셨다면 오라클 클라이언트 파일을 다운받아줍니다.
아래 링크에서 다운받아 줍니다. 저는 21.9버전 설치했습니다.
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
다운로드를 완료하셨다면 폴더 통째로 root에 옮겨줍니다.
이제 코드를 작성해줍시다.
main.ts에서 설치한 oracledb 패키지를 import하고 설치했던 오라클 클라이언트를 실행하는 코드를 입력합니다.
//main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as oracledb from 'oracledb';
async function init() {
const app = await NestFactory.create(AppModule);
//oracle client 실행
try {
oracledb.initOracleClient({ libDir: './instantclient_21_9' });
} catch (err) {
console.error('undefined oracle client');
console.error(err);
process.exit(1);
}
await app.listen(3001);
}
init();
root에 dbconfig.ts 파일을 만들고 접속정보를 입력해줍니다.
(※dbconfig.ts는 꼭 gitignore에 등록해서 git서버에 올라가지 않도록 주의합니다)
//dbconfig.ts
export const oracleDbConfig: object = {
user: 'USER',
password: 'PASSWORD',
connectString: '서버정보',
externalAuth: false,
};
main.js에서 dbconfig.ts 를 임포트합니다.
oracle에 접속한 후 쿼리를 입력해 테스트 해봅니다.
//main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as oracledb from 'oracledb';
import { oracleDbConfig } from 'dbconfig';
async function init() {
const app = await NestFactory.create(AppModule);
//oracle client 실행
try {
oracledb.initOracleClient({ libDir: './instantclient_21_9' });
} catch (err) {
console.error('undefined oracle client');
console.error(err);
process.exit(1);
}
//oracle 접속
let connection = await oracledb.getConnection(oracleDbConfig);
let binds = {};
let options = {
outFormat: oracledb.OUT_FORMAT_OBJECT, // query result format
};
//query 실행
let result = await connection.execute('select * from TABLE', binds, options);
//접속 종료
await connection.close();
console.log(result);
await app.listen(3001);
}
init();
다음과 같이 콘솔에 찍히는 것을 확인하실 수 있습니다.
'Server > NodeJs' 카테고리의 다른 글
[NodeJS] NestJs socket.io 로 실시간 채팅 구현 (0) | 2023.06.13 |
---|---|
[NodeJS] NestJs nodemailer 모듈로 메일 전송 (0) | 2023.06.05 |
[NodeJS] NestJs MSSQL 연결하기 (0) | 2023.03.24 |