2

gridfs-stream を使用して、ファイルを検索およびフェッチするときにバケット名を指定するにはどうすればよいですか?

私の質問は、stackoverflow で見つかった次の質問のフォローアップです。どのように GridFS バケットを指定できますか?

そこにあるソリューションは、createWriteStream を呼び出すときにバケットを指定する方法の例を提供します。@vsivsi から提供されたコードに基づいて、次のコードの「root」オプションを使用して、カスタム バケットにファイルを追加できます。

// 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 に正常に追加されます。だから今、アップロードしたファイルを見つけて読みたいと思っています。バケットを使用しない私の find() は次のようになります。

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

クエリを実行するバケット/ルートを検索するにはどうすればよいでしょうか?

createReadStream() を呼び出すときに同じ「root」オプションを使用できると想定していますが、最初にそれを見つける必要があります。使用するバケット/ルートを gridfs-stream に伝える方法はありますか?

4

1 に答える 1