问题描述
我正在学习使用 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 (将#修改为@)