mongodb - 从 MongoDB 下载图像文件

标签 mongodb angular mongoose gridfs-stream

尝试使用路由从 MongoDB 下载图像文件:

router.get('/:id', function(req, res) {
  gfs.findOne({ _id: mongoose.Types.ObjectId(req.params.id) }, function(err, file) {
    if (err) {
      common.handleError(err, res);
      return;
    }

    if (!file) {
      return res.json({ status: constants._ERROR, body: { message: constants._FILE_NOT_FOUND }});
    }

    res.set('Content-Type', file.contentType);
    res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"');

    //console.log(file);
    var readstream = gfs.createReadStream({
      _id: file._id
    });

    readstream.on('error', function (err) {
      console.error('Read error', err);
      res.end();
    });

    readstream.pipe(res);
  });
});

堆栈跟踪:

/Users/eric.miles/Projects/Personal/mean/emcontacts/node_modules/mongodb/lib/utils.js:123
        process.nextTick(function() { throw err; });
                                      ^

    TypeError: Cannot read property 'readPreference' of null
        at new GridStore (/Users/eric.miles/Projects/Personal/mean/emcontacts/node_modules/mongodb/lib/gridfs/grid_store.js:130:66)
        at new GridReadStream (/Users/eric.miles/Projects/Personal/mean/emcontacts/node_modules/gridfs-stream/lib/readstream.js:68:17)
        at Grid.createReadStream (/Users/eric.miles/Projects/Personal/mean/emcontacts/node_modules/gridfs-stream/lib/index.js:53:10)
        at /Users/eric.miles/Projects/Personal/mean/emcontacts/server/routes/file.js:51:26

版本:

"gridfs-stream": "^1.1.1",
"mongoose": "^4.11.13"

在 createReadStream 行上搞砸了。文件肯定在数据库中,“fs.files & fs.chunks”。

暂时尝试通过 Postman 访问。

最佳答案

所以,我必须做的就是像这样设置我的数据库连接:

mongoose.connect(mongodb_url, { useMongoClient: true });
var db = mongoose.connection;
db.options = {};
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.info('database connection successful');
});

“db.options = {};”是踢球者。

关于mongodb - 从 MongoDB 下载图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46413947/

相关文章:

c# - MongoDB 在 InsertOne 上抛出 "MongoDB.Bson.BsonSerializationException"

javascript - 显示按字段分组的项目

node.js - CORS 错误 Angular 2 + Express Node

node.js - 应用程序未连接到 Mongoose 数据库

MongoDB/Mongoose 对日期字段的唯一约束

mongodb - Meteor mongo shell 最新吗?

node.js - Mongoose - 访问版本 key

javascript - 如何在 Angular 6 的文本框值中使用异步管道处理可观察对象?

angular - 将元素添加到 mat-tab-group 元素

node.js - MongoDB - 如何使用 Node.js 获取集合的大小?