在使用GridFS和NodeJS将图像存储在MongoDB中之前,如何压缩图像



我正在尝试使用GridFS和MongoDB在NodeJS应用程序中上传图像。我想在上传到MongoDB之前压缩图像,并且我已经共享了GridFS中间件。

我想知道我应该把压缩代码放在哪里,或者是否有更好的方法来压缩图像?

require('dotenv').config();
const multer = require('multer');
const GridFsStorage = require('multer-gridfs-storage');
const Grid = require('gridfs-stream');
const Mongoose = require('mongoose');
const Mongouri = process.env.MONGO_URL;
let conn = Mongoose.connection;
let gfs;
conn.once('open',()=>{
gfs = Grid(conn.db,Mongoose.mongo);
gfs.collection('Posts');
});

//defining the middleware for multer so this will be called everytiime a new image is uploaded using multer 
let storage = new GridFsStorage({
url:Mongouri,
file:(req,file)=>{
return new Promise(
(resolve,reject)=>{
const fileInfo = {
filename:Mongoose.Types.ObjectId()+file.originalname,
bucketName:"Posts"
};
resolve(fileInfo);
}
);
}
});

//initialising multer with the middleware 
const upload = multer({storage});
module.exports = upload;

Sharp是在将图像保存到DB之前压缩图像的更好工具。来源-夏普npm模块

最新更新