【问题标题】:TypeError: grid.mongo.GridStore is not a constructor when I try to read stream with GridTypeError:当我尝试使用 Grid 读取流时,grid.mongo.GridStore 不是构造函数
【发布时间】:2022-04-11 16:51:57
【问题描述】:

我将 GridFsStorage 与 multer 一起使用。 这是我输出 TypeError 的代码。

const mongoURI=DB


const conn = mongoose.createConnection(mongoURI);

let gfs;
conn.once('open', function() {
  //STREAM INITIALIZING
  gfs=GridFSBucket(conn.db, mongoose.mongo)
  gfs.collection('uploads')
})



 gfs.files.findOne({filename:req.params.filename},(err,file)=>{
    const readstream = gfs.createReadStream(file.filename)
    readstream.pipe(res)
  })

【问题讨论】:

标签: node.js mongoose node-modules gridfs-stream multer-gridfs-storage


【解决方案1】:

我也有这个问题。原因是 .GridStore 在 mongoose 6.0.5 之后被弃用了。

要解决这个问题,请创建第二个变量,名称为:

conection.once('open', () => {
  //Init Stream
  gridfsBucket = new mongoose.mongo.GridFSBucket(conection.db, {
    bucketName: 'uploads'
  })
  gfs = Grid(conection.db, mongoose.mongo);
  gfs.collection('uploads');
})

为了获取文件,我使用了这种形式的变量:

const readStream = gridfsBucket.openDownloadStream(file._id);
readStream.pipe(res)

【讨论】:

  • 在不同的问题上两次发布相同的答案是应该避免的。在这种特殊情况下,不可能投票让一个人与另一个人接近。但你仍然不应该那样做。
猜你喜欢
  • 2021-11-02
  • 2022-08-06
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2019-08-14
  • 2021-05-17
相关资源
最近更新 更多