初始化 GridFS Stream

问题描述

我正在学习使用 gridFS 将文件或图像上传到 MongoDB 我正在关注此视频 https://www.youtube.com/watch?v=3f5Q9wDePzY 但我无法在回调函数之外获取 gfs 实例 软件包的当前版本是 "crypto-js": "^4.0.0","快递": "^4.17.1","gridfs-stream": "^1.1.1","方法覆盖": "^3.0.0","猫鼬": "^5.12.10","multer": "^1.4.2","multer-gridfs-storage": "^4.2.0",

提前致谢

const crypto = require('crypto');
const mongoose = require('mongoose');
const multer = require('multer');
const GridFsstorage = require('multer-gridfs-storage');
const Grid = require('gridfs-stream');
const {database} = require('../config/database');
const path = require('path')



const storage = new GridFsstorage({
 url:database,file:(req,file) => {
   return new Promise((resolve,reject) => {
     crypto.randomBytes(16,(err,buf) => {
       if(err) {
         return reject(err);
       }
       const filename = buf.toString('hex') + path.extname(file.originalname);
       const fileInfo = {
         filename,bucketName:'uploads'
       }
       resolve(fileInfo)
     })
   })
 }
})

const checkFileType = (file,cb) => {
 //Alowes ext
 const fileTypes = /jpeg|jpg|png|gif|pdf/;
 const extname = fileTypes.test(path.extname(file.originalname).toLowerCase())

 if(extname){
  return cb(null,true)
 }else {
  return cb("Images and pdf Only")
 }
}

const upload = multer({storage,fileFilter : function(req,file,cb){
 checkFileType(file,cb)
}})



const  connect =  mongoose.createConnection(
   database,{
     useNewUrlParser: true,useUnifiedTopology: true,useCreateIndex: true,useFindAndModify: false,},);


let gfs ;


connect.once('open',() => {

 gfs = Grid(connect.db,mongoose.mongo )
 gfs.collection('uploads' ) // here it's working 

})

console.log(gfs,"its outside") //here i am getting undefined


module.exports = {gfs,upload}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)