2014-07-08 11 views
1

GridFS (MongoDB), 몽구스 및 익스프레스 사용법을 배우려고합니다. SVG 및 JSON을 포함한 양식 데이터로 POST을 받으려고합니다.몽구스 모델 - GridFS 이미지 참조 포함

var postSchema = mongoose.Schema({ 
    title: String, 
    img: { data: Buffer, contentType: String } 
}) 
var Post = mongoose.model('Post', postSchema); 

나는 GridFS streaming library를 사용 하도다 것이라고 생각하고있다 : 나는 다음과 같은 모델을 가지고있다. 여기에 내가이 발생한다고 생각 무엇 : 나는 매우 붙어 어딘지

//What to do here? 
app.post('/upload', function(req, res, next) { 
    var post = new Post; 
    post.img.data = fs.readFileSync(req.files.image);//Can I do this? 
    post.img.contentType = 'image/svg+xml'; 
    post.title = req.title; 
    var writestream = gfs.createWriteStream([options]); 
    fs.createReadStream('/some/path').pipe(writestream); 
    post.save(); 
}); 

이입니다. POST (지금 당장은 SVG에 초점을 맞추고 있습니다)에서 이미지를 읽고, 어떻게 든 내 모델에 연결 한 다음이 모델을 저장하고 이미지를 gridFS에 저장해야합니다. 나는 올바른 길을 가고 있는가?

+0

. 실제로 16MB를 넘는 "이미지"가 없다면 GridFS는 필요한 것이 아닐 것입니다. 사람들이 생각하는 MongoDB를위한 "파일 저장"API가 아닙니다. 설명서를 읽으십시오. 나는 당신이 정말로 그것을 검색하는 데이터를 저장하기를 원한다고 생각한다. MongoDB는 이것을 정말로 잘합니다. –

+0

@ NeilLunn, 입력 해 주셔서 감사합니다. 내 이미지의 크기를 확인할 수 없기 때문에 GridFS를 선택합니다. SVG로 시작해야하기 때문에 시작 작업에 문제가 없을 수도 있습니다. 그 정보를 어디에서 찾을 수 있는지 아십니까? –

답변

0

나는 이것을하는 더 좋은 방법을 알아 냈다. 내가 사용하고있는 SVG 이미지는 모두 16MB 미만입니다 (많은 부분). SVG는 단지 하나의 문자열이므로 실제로 제공하기가 쉽습니다. 기억해야 할 중요한 점은 적절한 콘텐츠 헤더 (img/svg + xml)도 제공하는 것입니다.

Mongoose.js 스키마 당신이 여기에 정의하는 것이 일반적 "GridFS"사양이나 사용중인 "gridfs 스트림"라이브러리 호환되지 않습니다

var svgPostSchema = mongoose.Schema({ 
    img: { data: String, contentType: String } 
})