2017-11-21 12 views
0

gridfs-stream을 사용하면 파일을 찾고 가져올 때 버킷 이름을 어떻게 지정합니까?gridfs-stream을 사용하여 find()를 실행할 때 GridFS 버킷을 지정하는 방법

내 질문 How can I specify a GridFS bucket

솔루션이 내가 createWriteStream를 호출 할 때 버킷을 지정하는 방법의 예를 제공에서 유래에서 볼 수있는 다음과 같은 질문의 후속이다.

// fyi, req.file has been populated using multer 
var gfs = Grid(mongoose.connection.db); 
var writeStream = gfs.createWriteStream({ 
    filename: req.file.originalname, 
    mode: 'w', 
    content_type: req.file.mimetype, 
    root: 'private' 
}); 

이 성공적으로 private.files 및 private.chunks 내 파일을 추가합니다 @vsivsi에서 제공하는 코드에 근거하여, 나는 다음과 같은 코드에서 '루트'옵션을 사용하여 내 사용자 정의 버킷에 파일을 추가 할 수 있어요 . 이제 업로드 된 파일을 찾아보고 싶습니다. 버킷을 사용하지 않는 나의 발견은()과 같습니다

var gfs = Grid(mongoose.connection.db); 
gfs.find({ 
    filename: req.params.filename 
}).toArray(function(err, files){ 
    // bunch of processing here... 
}); 

을 지금은 버킷/루트 쿼리 찾을 어떻게 알 수 있습니까?

나는 createReadStream()을 호출 할 때 동일한 'root'옵션을 사용할 수 있다고 가정하고 있지만 먼저 그것을 찾아야한다. gridfs-stream에 사용할 버킷/루트를 알려주는 방법이 있습니까?

답변

0

내 대답을 찾은 것 같습니다. 이 찾아 올 수도있는 다른 사람의 도움이

var gfs = Grid(mongoose.connection.db); 
gfs.collection('private').find({ 
    filename: req.params.filename 
}).toArray(function(err, files){ 
    // handle err and no files... 
    let readStream = gfs.createReadStream({ 
     filename: files[0].filename, 
     root: 'private' 
    }); 
    // ... etc. ... 
}); 

희망 :

Grid.prototype.collection = function (name) { 
    this.curCol = name || this.curCol || this.mongo.GridStore.DEFAULT_ROOT_COLLECTION; 
    return this._col = this.db.collection(this.curCol + ".files"); 
} 

그래서 나는 이제 다음을 사용하여 내 버킷을 검색 할 수 있습니다 gridfs 쓰기에 대한 소스를 보면, 나는 다음과 같은 프로토 타입을 발견 그것!