UNPKG

delta-file-multer

Version:

A simple plug-n-play file upload middleware using Multer and MongoDB

51 lines (42 loc) 1.25 kB
import { setupUploader } from "./uploader.js"; const deltaMulter = ({ app, dbField, collectionName, uploadPath, route, mongoose, }) => { if (!app || !dbField || !collectionName || !uploadPath || !route) { throw new Error("Missing required options in delta-file-multer config."); } const upload = setupUploader({ uploadPath }); // Dynamically create schema & model const dynamicSchema = new mongoose.Schema({ [dbField]: { type: String, required: true }, }); const model = mongoose.models[collectionName] || mongoose.model(collectionName, dynamicSchema); // Route app.post(route, upload.single("file"), async (req, res) => { if (!req.file) { return res .status(400) .json({ success: false, message: "File is required" }); } const newDoc = new model({ [dbField]: req.file.filename }); try { await newDoc.save(); res.json({ success: true, message: "File uploaded successfully", file: req.file.filename, }); } catch (err) { console.error(err); res.status(500).json({ success: false, message: "Upload failed" }); } }); }; export default deltaMulter;