Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何指定GridFS存储桶?_Mongodb_Gridfs_Bucket - Fatal编程技术网

Mongodb 如何指定GridFS存储桶?

Mongodb 如何指定GridFS存储桶?,mongodb,gridfs,bucket,Mongodb,Gridfs,Bucket,这是我的express.js代码,用于将文件上载和下载到GridFS: var fs = require("fs"); var gridStream = require("gridfs-stream"); var mongoose = require("mongoose"); exports.init = function(app, db) { var grid = gridStream(db, mongoose.mongo); app.post("/UploadFile",

这是我的express.js代码,用于将文件上载和下载到GridFS:

var fs = require("fs");
var gridStream = require("gridfs-stream");
var mongoose = require("mongoose");

exports.init = function(app, db)
{
    var grid = gridStream(db, mongoose.mongo);

    app.post("/UploadFile", function(request, response)
    {
        var file = request.files.UploadedFile;

        var meta = request.param("Meta");
        var name = request.param("Name");

        var stream = grid.createWriteStream(
        {
            filename: name,
            metadata: meta
        });

        fs.createReadStream(file.path)
        .on("end", function()
        {
            response.send({ Success: true });
        })
        .on("Error", function(error)
        {
            HandleError(error, response);
        })
        .pipe(stream);
    });

    app.get("/DownloadFile", function(request, response)
    {
        var selector = request.param("Selector");

        response.writeHead(200, { "Content-Type" : "image/png"});
        grid.createReadStream({ filename: "FileUploadNamed" }).pipe(response);
    });
}
它工作得很好,但我想指定一个读写的bucket,但我不确定如何做到这一点。我在网上看到过调用GridFS构造函数的例子,但正如您所看到的,我在这里没有这样做。文档还说可以提供不同的bucket名称,但我没有看到任何关于如何提供的内容


如何选择将文件保存到哪个bucket并从中读取?

这在gridfs stream或它使用的底层本机mongodb驱动程序中没有很好的说明,但下面是如何做到的:

下面是gridfs流
createWriteStream
中的
选项
对象(请注意
选项):

工作原理:

gridfs流通过
选项
对象,您将调用
createWriteStream
createReadStream
传递给底层mongodb驱动程序,以创建表示文件的
gridStore
对象。mongodb驱动程序反过来替代默认的“fs”网格存储桶前缀字符串

{
   _id: '50e03d29edfdc00d34000001', 
   filename: 'my_file.txt',         
   mode: 'w', 
   chunkSize: 1024, 
   content_type: 'plain/text', 
   root: 'my_collection',  // Bucket will be 'my_collection' instead of 'fs'
   metadata: {
       ...
   }
}