목록IT/Node.js (6)
And Brain said,
https://poiemaweb.com/mongoose Node.js(express)와 MongoDB 연동 RESTful API - Mongoose | PoiemaWeb Mongoose는 Node.js와 MongoDB를 위한 ODM(Object Data Mapping) library이다. Java 기반의 Hibernate. iBatis 등의 ORM(Object Relational Mapping)과 유사한 개념이다. ODM의 사용은 코드 구성이나 개발 편의성 측면에서 장점이 poiemaweb.com 이 문서를 참고하였다. 오늘은 빈 폴더부터 시작하겠다. node 버전은 16.18.0이다. 터미널을 켜주고 npm init -y 를 입력 mongoose도 설치 nodemon도 설치해주면 편하다. index.j..
Mongoose MongoDB를 기반으로 한 node.js 전용 객체지향 라이브러리 간단한 Express 서버와 함께 mongoose도 가져오자. 이렇게 연결해줬다. 자 이제 Schema를 설정해줄 것이다. RDBMS의 Schema는 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것이다. Mongoose의 Schema는 MongoDB에 저장되는 document의 데이터 구조, 즉 필드 타입에 관한 정보를 JSON 형태로 정의한 것으로 RDBMS의 테이블 정의와 유사한 개념이다. MongoDB는 Schema-less하다. 이는 RDBMS처럼 고정 Schema가 존재하지 않는다는 뜻으로 같은 Collection 내에 있더라도 document le..
Node.js는 역사가 굉장히 짧은 편임에도 개발자들의 눈길을 끌었고 자신의 존재감을 키웠다. 어떻게 Node.js는 단기간에 효과적으로 개발자들을 매료시켰을까? Node.js가 각광받은 이유가 한 가지만은 아니지만, 그 중심에는 분명 비동기(asynchronous)와 Non-blocking이 있다. 그래서 오늘은 이 둘에 대해 살펴보자. 일단, 비동기(async)와 Non-blocking은 같은 개념이 아니다. 동기라고 무조건 Blocking이 아니며 비동기라 할지라도 Non-blocking이 아닐 수 있다. 각각의 개념에 대해 요약해보자면 블로킹 Blocking A 함수가 B 함수를 호출할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 논블로킹 Non-block..
req.params 라우터 매개변수 만약 이런 url로 요청이 온다면 app.get('/:id/:hisName', function (req, res) { console.log(req.params.id) // kycasdzxc console.log(req.params.hisName) // yermi // req.params = { id : 'kycasdzxc', hisName : 'yermi' } }) 이렇게 되는 것이다. req.query 는 여러분이 즐겨보는 youtube에 ufc를 검색하여 설명하겠다. query만 봐도 알지 않겠는가? app.get('/:id', function (req, res) { console.log(req.params.id) // results console.log(req.q..
글에 파일첨부 기능을 넣기위해 insert 문을 xml에 적어서 oracleDB와 express를 mybatis로 연동시켰는데 왜인지 Mybatis selectKey 문법이 express 환경에서 안 되서 insert를 할 때 selectKey를 안 쓰고 마지막 시퀀스 값 을 가져오는 법을 사용했다. SEQ.NEXTVAL은 증가시키고 SEQ.CURRVAL은 현재 시퀀스 값을 가져온다는 것은 잘 알 것이다. 이 두 개만 있으면 얼핏 selectKey가 필요없어보이지만 selectKey를 쓰는 이유가 있지 않겠는가? SEQ.CURRVAL은 같은 세션에 SEQ.NEXTVAL을 한 번 때려줘야만 가능한 녀석이다. SEQ.CURRVAL만 따로 쓰거나 먼저 쓸 수 없다는 얘기다. 그래서 시퀀스의 최근 값을 가져오는..