I'm getting that cloudinary uploader is undefined, although when I log cloudinary to console it shows that my uploader is defined.
main code lines --
const cloudinary = require('../cloudinary');
await cloudinary.uploader.destroy(filename); //this is where is failed
at controller
module.exports.updateCampground = async (req, res) => {
const { id } = req.params;
const campground = await Campground.findByIdAndUpdate(id, { ...req.body.campground });
const imgs = req.files.map(f => ({ url: f.path, filename: f.filename }));
campground.images.push(...imgs);
await campground.save();
if (req.body.deleteImages) {
for (let filename of req.body.deleteImages) {
//logs cloudinary conataining uploader, still uploader is undefined
console.log(cloudinary,cloudinary.uploader);
await cloudinary.uploader.destroy(filename);
}
await campground.updateOne({ $pull: { images: { filename: { $in: req.body.deleteImages } } } })
}
req.flash('success', 'Successfully updated campground!');
res.redirect(`/campgrounds/${campground._id}`)
};
at cloudinary.js
const cloudinary = require('cloudinary').v2;
const { CloudinaryStorage } = require('multer-storage-cloudinary');
cloudinary.config({
cloud_name:process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_KEY,
api_secret: process.env.CLOUDINARY_SECRET
});
const storage = new CloudinaryStorage({
cloudinary,
params: {
folder: 'YelpCamp',
allowed_formats: ['jpeg','png', 'jpg'],
format: async (req, file) => 'png', // supports promises as well
}
});
module.exports = {
cloudinary,
storage
};
