我正在学习使用 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}