0

我正在学习使用 gridFS 将文件或图像上传到 MongoDB我正在关注此视频https://www.youtube.com/watch?v=3f5Q9wDePzY 但我无法在回调函数之外获取 gfs 实例当前版本的包是“ crypto-js”:“^4.0.0”,“express”:“^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}
4

0 回答 0