GridFS에 대하여 샘플을 돌려보자
1) 예제 다운로드
- git 복제한다
[~/development/mongodb]git clone https://github.com/jamescarr/nodejs-mongodb-streaming.git gridfs_mongoose
Cloning into 'gridfs_mongoose'...
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 44 (delta 12), reused 40 (delta 8)
Unpacking objects: 100% (44/44), done.
- 파일을 JetBrains WebStorm에서 열어보았다
+ coffee-script 이용하여 app.js 를 app.coffee 로 작성
- 실행하기전 express, mongoose, request, jade 모듈 설치
+ npm install express
+ npm install mongoose
+ npm install request
- 실행 : http://localhost:3000 호출
+ 호출하기전 MongoDB를 start 해 놓아야 한다
[~/development/mongodb/gridfs_mongoose]coffee app
Server running. Navigate to localhost:3000
+ 브라우져 호출하면 파일 업로드 화면이 나온다
2) GridFS 파일 업로드 하기
- 화면에서 Name을 입력하고 File 을 선택한 후 "제출" 버튼을 클릭한다
- MongoDB의 mongo에서 확인을 한다 : dowonFile 은 프로그램안에서 사용한 Collection 명칭이다
[~/mongodb]mongo
MongoDB shell version: 2.2.3
connecting to: test
///////////////
// 제출전 상태
> show dbs
local (empty)
///////////////
// 제출후 상태
> show dbs
dowonFile 0.203125GB
local (empty)
> use dowonFile
switched to db dowonFile
> show collections
applications
fs.chunks
fs.files
system.indexes
> db.applications.find();
{ "name" : "dowonGridFileSample", "_id" : ObjectId("51392f28dfa5f69404000001"), "files" : [ { "md5" : "6dda9a5cd37e113b246fd00604bf3638", "uploadDate" : ISODate("2013-03-08T00:22:01.077Z"), "chunkSize" : 262144, "length" : 7772701, "contentType" : "binary/octet-stream", "_id" : ObjectId("51392f28dfa5f69404000002") } ] }
3) 예제 분석하기
- *.coffee 를 컴파일하여 분석할 수도 있다 : coffee -c *.coffee 수행하면 *.js 파일 생성됨
- 가급적 coffee-script에 익숙해 지도록 하자 (참조)
- app.coffee
+ 기본 환경 셋업
+ 스키마 생성
+ 호출을 위한 get/post 구성 : /new/:id 값을 RESTful 로 호출하면 파일을 다운로드 받을 수 있다 (id는 몽고디비에서 _id 참조)
+ gridfs 전용 put, find 관련 메소드를 정의하여 모듈화 한다
4) Mocha 테스트
- git clone 받은 디렉토리에서 Mocha 테스트를 수행한다 : current 디렉토리 밑으로 test 디렉토리의 테스트 파일을 자동 수행한다
- 테스트 파일 형식
+ .js : mocha
+ .coffee : mocha --compilers coffee:coffee-script
<참조>
- 원문 : nodejs-mongodb-streaming (Node.js mongoose+GridFS 예제)
'MongoDB > MapReduce' 카테고리의 다른 글
[MongoDB] Aggregation Framework 실습하기 (0) | 2013.08.03 |
---|---|
[MongoDB] Aggregation Framework 이해하기 (0) | 2013.08.03 |
[MongoDB] GridFS 개념잡기 (0) | 2013.02.23 |