1. Oracle 지원 모듈 설치
npm install oracledb --save
*참고*
.h => c언어
.dll - dynamic linked library
vc - visual studio에서 c로만든 프로그램 (vc8 8버전)
2. ORACLE정보 cmd창에 등록
1) ORACLE의 lib를 등록한다
C:\Users\stu>set OCI_LIB_DIR = C:\app\stu\product\11.2.0\dbhome_1\OCI\lib\MSVC
2)
C:\Users\stu>set OCI_LIB_DIR = C:\app\stu\product\11.2.0\dbhome_1\OCI\include
*참고*
프로젝트 생성할 때 원래쓰던 패키지 가져오는법
방법1. node_modules 폴더 copy 해오기
방법2. package.json만 copy해 온 후 해당프로젝트 cmd창가서 npm install 명령어 주기
(패키지 다 설치 + 기본모듈까지 설치해줌)
기본 예제
- 이전 시간에 배운 Node.js + MongoDB에서 사용했던 예제를 그대로 가지고 겹치는 코딩만 모듈화 시켜놓는 작업을 할 것 + Oracle DB 사용하기
* script 파일명은 보통 앞글자 소문자
[공통]
- user.js : 내보내는 파일
- moduleTest.js : user.js를 불러올 파일
user1.js
// exports 객체 속성으로 함수(메소드) 추가
exports.getUser = function(){
return {id:"미스에이",name:"suzi"};
}
// exports 객체 속성으로 객체를 추가
exports.group = {id:"EXID",name:"하니"};
moduleTest1.js
// user1.js 불러오기
var user = require("./user1");
//메소드 갖다씀
function showId() {
return user.getUser().id + ", " + user.group.id;
}
//객체 갖다씀
function showName() {
return user.getUser().name + ", " + user.group.name;
}
console.log("아이디 정보: " + showId());
console.log("이름정보: " + showName());
require 메소드는 exports 객체를 리턴한다.
(게속 써오던 require 메소드들은 내부적으로 전부 user1.js 코딩처럼 되어 있다)
user2.js
exports = {
//메소드
getUser : function(){
return {id:"미스에이",name:"suzi"};
},
//group이라는 객체
group : {id:"EXID",name:"하니"}
}
이 메소드와 객체, 두개를 같이 써도 되느냐? X
exports에는 속성만 추가할 수 있고 (user1.js처럼) 객체는 할당할 수 없다
exports에 속성을 추가하면 모듈에서 접근이 가능하지만 객체를 할당하면 자바스크립트에서는 새로운 변수로 처리한다
var user = require("./user2");
console.dir(user);
// 결과: {} -> null값
// 그냥 비어있는 user 변수 하나를 선언했다고 생각하는것임
module.exports에 객체를 직접 할당해서 내보내기? O
객체 user안에 메소드와 객체를 같이 묶어 내보낸다
user3.js
var user = {
getUser : function(){
return {id:"미스에이",name:"suzi"};
},
group : {id:"EXID",name:"하니"}
}
//하나의 묶음으로 user에 담아서 내보낼 수 있다
module.exports = user;
moduleTest3.js
var user = require("./user3");
console.dir(user);
function showId() {
return user.getUser().id + ", " + user.group.id; // 메소드 갖다씀
}
function showName() {
return user.getUser().name + ", " + user.group.name; // 객체 갖다씀
}
console.log("아이디 정보: " + showId());
console.log("이름정보: " + showName());
module.exports에 함수를 직접 할당하기
user4.js
module.exports = function(){
return {id:"suzy",name:"배수지"};
};
moduleTest4.js
var user = require("./user4");
function showUser(){
return user().name + "(" + user().id + ")";
};
console.log("사용자 정보: " + showUser());
(우선순위) module.exports가 사용되면 그냥 exports는 무시된다
user5.js
// module
module.exports = {
getUser : function(){
return {id:"미스에이",name:"suzi"};
},
group : {id:"EXID",name:"하니"}
};
// exports 객체 속성으로 객체 추가
exports.group = {id:"모델",name:"안젤리나"};
moduleTest.js
var user = require("./user5");
function showId() {
return user.getUser().id + ", " + user.group.id;
}
function showName() {
return user.getUser().name + ", " + user.group.name;
}
console.log("아이디 정보: " + showId());
console.log("이름정보: " + showName());
require("./....").printUser; 방식으로 가져오기
user6.js
exports.printUser = function() {
console.log("사용자의 이름은 suzy 입니다");
}
moduleTest6.js
var printUser = require("./user6").printUser;
// MongoClient 가져올때도 똑같은 방식이였음
printUser();
사용패턴 - 1. 객체를 생성함과 동시에 초기화, 내보내기
* prototype이 들어가는건 무조건 메소드임
user7.js
// 함수로 생성자 지정
function User(id,name) {
this.id = id;
this.name = name;
}
// User 객체의 printUser 메소드 생성
User.prototype.printUser = function(){
console.log("이름: %s, 그룹: %s",
this.name, this.id);
}
//객체를 생성함과 동시에 초기화
module.exports = new User("미스에이","수지");
moduleTest7.js
var user = require("./user7");
user.printUser();
사용패턴 - 2. 클래스 내보내기
user8.js
// 함수로 생성자 지정
function User(id,name) {
this.id = id;
this.name = name;
}
User.prototype.getUser = function() {
return {id:this.id, name:this.name};
}
User.prototype.group = {id: "미스에이", name:"수지"};
// User 객체의 printUser 메소드 생성
User.prototype.printUser = function(){
console.log("이름: %s, 그룹: %s",
this.name, this.id);
console.log("이름: %s, 그룹: %s",
this.group.name, this.group.id);
};
// 클래스 내보냄
module.exports = User;
moduleTest8.js
// 클래스를 받은것이기 때문에 대문자로 받은것임 User
var User = require("./user8");
var user = new User("MissA","suzi");
user.printUser();
'Node' 카테고리의 다른 글
Node.js 에 View Template 적용하기 (1) - Semantic UI (미완) (0) | 2019.11.08 |
---|---|
Node.js + Oracle 을 이용한 로그인/패스워드 웹서버 구축하기 (0) | 2019.11.07 |
Node.js + MongoDB (0) | 2019.11.04 |
Node.js - 웹 서버 구축 (Express 미들웨어) (0) | 2019.11.04 |
Node.js - winston 모듈 (미완) (0) | 2019.11.01 |