微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初始化 GridFS Stream

如何解决初始化 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 举报,一经查实,本站将立刻删除。