Meanjs unable to save image into nested schema Meanjs unable to save image into nested schema mongoose mongoose

Meanjs unable to save image into nested schema


This is the way i used MEAN.JS for file upload.

Model

  var UserSchema = new mongoose.Schema({  name:{type:String,required:true},  photo:Buffer  // Image  });

Server Controller

var userPicture = function(req,res){             // Stores Picture for a user matching the ID.    user.findById(req.param('id'), function (err, user) {        console.log(req.files) // File from Client        if(req.files.file){   // If the Image exists            var fs = require('node-fs');            fs.readFile(req.files.file.path, function (dataErr, data) {                if(data) {                    user.photo ='';                    user.photo = data;  // Assigns the image to the path.                    user.save(function (saveerr, saveuser) {                        if (saveerr) {                            throw saveerr;                        }                        res.json(HttpStatus.OK, saveuser);                                            });                }            });            return        }        res.json(HttpStatus.BAD_REQUEST,{error:"Error in file upload"});    });};

Client Controller

    $scope.saveuserImage =  function(){        $scope.upload = $upload.upload({  // Using $upload            url: '/user/'+$stateParams.id+'/userImage',  // Direct Server Call.            method:'put',            data:'',  // Where the image is going to be set.            file: $scope.file        }).progress(function (evt) {})            .success(function () {                var logo = new FileReader();  // FileReader.                $scope.onAttachmentSelect = function(file){                    logo.onload = function (e) {                        $scope.image = e.target.result;  // Assigns the image on the $scope variable.                        $scope.logoName = file[0].name; // Assigns the file name.                        $scope.$apply();                    };                    logo.readAsDataURL(file[0]);                    $scope.file = file[0];                    $scope.getFileData = file[0].name                };                location.reload();                $scope.file = "";                $scope.hideUpload = 'true'            });        $scope.getFileData = '';     //        location.reload()    };

Html

<input ng-file-select="onAttachmentSelect($files)" ng-model="getFileData" name="upload" type="file" required="true">

The ng-file-select is used to get the file from the client.

This works fine for me. Hope this helps.