본문 바로가기

WEB/Node.JS

(9)
[express] 정적(static) 파일 서비스 1. 필요한 이유 multer를 통해 서버에 저장한 이미지를 클라이언트에 줘야할때 어떻게 줘야할지 고민하다가 express에서 정적 파일 전달 서비스를 이용하여 전달하는 방법으로 구상해보았다. png, css, js 등 이미지 이외에도 전달이 가능하다. 2. 사용 방법 app.use(express.static('public')); express 라이브러리에는 stastic이라는 메서드가 있다. 이 메서드를 미들웨어로서 로드해둔다 static의 인자로 전달되는 'public'은 디렉터리의 이름이다. 따라서 'public' 이라는 디렉터리 밑에 있는 데이터들은 웹브라우저의 요청에 따라 제공해줄 수 있게되었다. ​ 가령, 사용자가 localhost:5000/images/cat.jpg 로 접근한다면, 해당 파일..
[express] 데이터 업데이트(update, findAndModify) update // name이 Kwon Hyeok Jin인 문서를 찾아 name을 Kim Hyeok Jin으로 바꾸고 age 또한 15으로 바꾼다 db.test.update({ 'name': 'Kwon Hyeok Jin' }, { 'name': 'Kim Hyeok Jin', 'age': 15 }); 위 메소드를 사용할때 유의할 점은 name이 Kwon Hyeok Jin인 문서의 기존 데이터들은 전부 삭제가 되고 name, age로만 구성이 된다. mongodb.collection.update({ name: 'Kwon Hyeok Jin' }, { $set: { age: 15 } }); 위 메소드는 $set을 사용하였다. 이렇게 사용하면 기존 데이터들은 유지가 되고 age만 15로 변경된다. updateOne..
[express] mongodb 데이터 삭제(remove, delete) // name이 kwon Hyeok Jin인 데이터 모두 삭제 mongodb.collection.remove({ name : Kwon Hyeok Jin }) // name이 Kwon Hyeok Jin인 데이터 중 하나만 삭제한다. mongodb.collection.deleteOne({ name : Kwon Hyeok Jin })
[express] mongodb 데이터 삽입(insert, save) // name의 값을 Kwon Hyeok Jin을 가지는 데이터 삽입 mongodb.collection.save({ name : Kwon Hyeok Jin }) // name의 값을 Kwon Hyeok Jin을 가지는 데이터 삽입 mongodb.collection.insert({ name : Kwon Hyeok Jin }) save와 insert은 둘다 데이터를 삽입하는 메소드이다. 하지만 차이점은 save는 해당 키값이 이미 콜렉션에서 존재한다면 update를 하고 insert는 에러를 출력한다. save는 SQL에서 on duplicate key update와 같은 기능을한다.
[express] mongodb 데이터 검색(find, findOne) 컬렉션의 데이터를 전체 조회할때 mongodb.collection.find() // collection 데이터 전체조회 컬렉션의 특정 데이터가 포함된 데이터를 조회할때 // name이 Kwon Hyeok Jin이고 gender가 male인 데이터만 조회 mongodb.collection.find({ name : Kwon Hyeok Jin, gender : male }) 내부 오브젝트는 조건이다. SQL의 Where가 비슷한 기능을 한다. Where name = 'Kwon Hyeock Jin' and gender = 'male'인 셈이다. 쿼리 연산자를 사용하여 조회하는 것도 가능하다. // age의 값이 10이상 30 이하인 값을 조회 mongodb.collection.find( { “age”: { $g..
[Node.js] express란 Express 는 가장 인기있는 Node 웹 프레임 워크 이며, 다른 많은 인기있는 Node web frameworks의 기본 라이브러리 입니다. Express는 다음과 같은 메커니즘을 제공합니다 HTTP 통신 요청(Request; GET, POST, DELETE 등)에 대한 핸들러를 만든다. 템플릿에 데이터를 넣어 응답(response)을 만들기 위해 view의 렌더링 엔진과 결합(integrate)한다. 접속을 위한 포트나 응답 렌더링을 위한 템플릿 위치같은 공통 웹 어플리케이션 세팅을 한다. 핸들링 파이프라인(reqest handling pipeline) 중 필요한 곳에 추가적인 미들웨어 처리 요청을 추가한다. 라우팅 라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등..
[Node.JS] express를 사용해보자 1. Node.js 설치가 필요하다. 구글에 Nodejs 검색 후 가장 먼저 나오는 사이트에 들어가 설치를 하도록 합시다. 10버전 이상이 필요하니 이전에 설치하셨던 분들은 신버전으로 다시 설치하십시오. (중요) 설치 경로 임의로 바꾸시면 npm 어쩌구 이런 명령어가 안먹을 수 있습니다. 경로는 건들지말고 C드라이브 기본 경로로 냅둡시다. (더 중요) 2. VS code 에디터가 필요합니다. 비쥬얼 스튜디오 코드 Visual Studio Code 라고 부르는 에디터인데 역시 구글 검색해서 설치합니다. 설치 후 실행까지 하도록 합시다. (바탕화면에 아이콘이 안보이면 검색메뉴에서 검색해보세요) 3. 작업 폴더를 만들고 에디터로 오픈합니다. 설마 폴더 만드는 법은 설명 필요없겠죠? 에디터로 오픈하려면 에디터 ..
[Node.JS] Node.JS를 서버로 사용하는 이유 Node.js는 자바스크립트 실행기 이전 게시글에서도 말했다 싶이 Node.js는 크롬 브라우저에 V8 즉, JavaScript 런타임이다. 그런데 이 엔진을 왜 이토록 Server 프로그래밍에 사용되는 이유가 무엇일까? 장점 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있다는게 가장 큰 장점! 새로운 언어를 습득하지 않고도 자바스크립트를 활용해 서버기술을 빨리 개발/응용할 수 있습니다. 개발이 빠르고 쉽다. 서버 설치부터 화면 띄우는 것까지 금방 처리 됩니다. Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능 로컬에서 서버만 켜봐도 얼마나 가볍게 돌아가는지 알 수 있다. 이벤트 기반 비동기방식이라 서버 무리가 적다. Non-blocking I/O 이 무엇인가?..