delta-file-multer
Version:
A simple plug-n-play file upload middleware using Multer and MongoDB
51 lines (42 loc) • 1.25 kB
JavaScript
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;