来自 multer-gridfs-storage 的抛出和处理错误

问题描述

我从 multer-gridfs-storage 中抛出错误,但不确定是否以更好的方式处理它。

我的代码:-

const storage = new gridfsstorage({
    url : 'mongodb://localhost:27017/uploadeditems',options : { useNewUrlParser : true,useUnifiedTopology : true  },file : (req,file) => {
        if(file.mimetype === 'image/jpeg') {
            return {
                filename : file.originalname,bucketName : 'Images',Metadata : {
                    ownername : "Anshu Anand"
                }
            }
        }
        else if(file.mimetype === 'application/pdf') {
            return {
                filename : file.originalname,bucketName : 'projectPDFs'
            }
        }

        else {
            throw new Error("File type is different")
        }
    }
})

upload = multer({
    storage,})

我的api来处理它:-

app.post('/upload',upload.single('project'),async (req,res) => {
    console.log(req.file)
    

    res.render('upload',{
            msg : "File has been uploaded successfully"
        })
},(err,req,res,next ) => {

    console.log(err) 

  return res.send(err) //gives just this :- storageError : [] 
  
)

console.log(err) 输出:-

Error: File type is different
at GridFsstorage.file [as _file] (F:\Node Projects\upload-download\index.js:41:19)
at GridFsstorage._generate (F:\Node Projects\upload-download\node_modules\multer-gridfs-storage\lib\gridfs.js:472:18)
at GridFsstorage.fromStream (F:\Node Projects\upload-download\node_modules\multer-gridfs-storage\lib\gridfs.js:368:35)
at GridFsstorage.fromFile (F:\Node Projects\upload-download\node_modules\multer-gridfs-storage\lib\gridfs.js:353:15)
at GridFsstorage._handleFile (F:\Node Projects\upload-download\node_modules\multer-gridfs-storage\lib\gridfs.js:314:9)
at F:\Node Projects\upload-download\node_modules\multer\lib\make-middleware.js:144:17
at allowAll (F:\Node Projects\upload-download\node_modules\multer\index.js:8:3)
at wrappedFileFilter (F:\Node Projects\upload-download\node_modules\multer\index.js:44:7)
at Busboy.<anonymous> (F:\Node Projects\upload-download\node_modules\multer\lib\make-middleware.js:114:7)
at Busboy.emit (node:events:376:20)
at Busboy.emit (F:\Node Projects\upload-download\node_modules\busboy\lib\main.js:38:33)
at PartStream.<anonymous> (F:\Node Projects\upload-download\node_modules\busboy\lib\types\multipart.js:213:13)
at PartStream.emit (node:events:376:20)
at HeaderParser.<anonymous> (F:\Node Projects\upload-download\node_modules\dicer\lib\Dicer.js:51:16)
at HeaderParser.emit (node:events:376:20)
at HeaderParser._finish (F:\Node Projects\upload-download\node_modules\dicer\lib\HeaderParser.js:68:8) {
 storageErrors: []
 }

那么我如何以更好的方式处理它并发送我在存储配置中抛出的确切错误

在此先感谢您的帮助。

解决方法

我找到了如何获取确切消息。 您可以在 err 的 message 属性上获取它。

 register_post_type( 'sportsCollege_class',$args );