I am using mongoose with node.js to find a document and update its properties but everytime i do so there is some sort of error which is not logging into the console.It is some issue with multer. Can anyone guess what am id doing wrong?
My schema:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name : {
type: String,
required: true
},
email : {
type: String,
required: true
},
password : {
type: String,
required: true
},
details: {
type: Object,
},
profile_img: {
data: String,
contentType: String,
}
})
const User = mongoose.model('User',UserSchema);
module.exports = User
Multer code:
var fs = require('fs');
var path = require('path');
var multer = require('multer');
//store images in db
var storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads')
},
filename: (req, file, cb) => {
cb(null, new Date().toISOString().replace(/:/g, '-')+ file.originalname);
}
});
const fileFilter = (req, file, cb) => {
// reject a file
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({
storage: storage,
fileFilter: fileFilter
});
Route:
router.post('/profile-chooser/developer/:method',upload.single('profile_photo'),ensureAuthenticated,(req,res) => {
//do db stuff
User.findOneAndUpdate({ "_id": mongoose.Types.ObjectId(req.user._id) },
{ "$set":
{
"details": {
"Some stuff": "update itttt"
},
"profile_img": {
"data": fs.readFileSync(path.resolve(__dirname, '../uploads/' + req.file.filename)),
"contentType": 'image/png'
}
}
})
.exec(function(err, user){
if(err) {
console.log(err);
res.status(500).send(err);
} else {
res.status(200).send(user);
}
});
})
I am sure this a problem with multer because when i changed fs.readFileSync(path.resolve(__dirname, ../uploads/ + req.file.filename))
this line into string and also removed upload.single(profile_photo)
it magically worked.
Can anyone please help me out.
Your fast response will be highly appreciated.
Thanks in advance.