2016-07-27 1 views
0

Если кто-то может мне помочь, я буду вечно благодарен. Я целыми неделями ударил головой о кирпичную стену, пытаясь получить изображения для загрузки, как это демонстрируется из коробки с помощью модуля пользователей MEAN.js. В созданном пользовательском модуле файл загружается в каталог, и путь к этому файлу сохраняется в поле в документе mongodb. Я могу получить файл для загрузки туда, где ему нужно перейти с помощью функции multer и fileupload. Однако я не могу сохранить путь к полю внутри документа. Я не могу понять, как избежать получения неопределенной переменной. Я попытался создать службу $ window и передать данные в нее как глобальную переменную и множество других вещей, и я полностью застрял.Получить неопределенную переменную, пытаясь обновить путь к загруженному файлу в MongoDB, используя угловую загрузку файла и MEAN.js

Я прокомментировал приведенный ниже код, чтобы продемонстрировать, что происходит в моей функции контроллера сервера changeShoePicture.

// This is the boilerplate code from the mean.js "users" module. 
// I can not create a $window service or global variable to store the 
// shoe data below so that I can update the shoe.shoeImageURL field 
// in MongoDB with path to the successfully uploaded file. 


exports.changeShoePicture = function (req, res) { 

var message = null; 
var shoe = req.shoe; 
var upload = multer(config.uploads.shoeUpload).single('newProfilePicture'); 
var profileUploadFileFilter = require(path.resolve('./config/lib/multer')).profileUploadFileFilter; 

console.log('i am here', shoe); // shoe is defined here. 

// Filtering to upload only images. This works and proceeds to the else condition! 

upload.fileFilter = profileUploadFileFilter; 
upload(req, res, function (uploadError) { 

    if(uploadError) { 
    return res.status(400).send({ 
     message: 'Error occurred while uploading profile picture' 
    }); 
    } else { 

//shoe image file is successfully uploaded to the location on the server,  
// However the following fails because the shoe variable is undefined. 

shoe.shoeImageURL = config.uploads.shoeUpload.dest + req.file.filename; 
     } 
    }); 
+0

Не могли бы вы добавить больше отладки, поставив больше 'console.log (обуви)'? Основа на фрагменте, который вы предоставили 'shoe', находится в области функции загрузки. – oKonyk

+0

У вас есть свой код на публике GitHub? Это интересный случай ... – oKonyk

ответ

0

Чтобы убедиться, что я получил это право:

функция загрузки вызывается на ваших параметров, передаваемых по вашему маршруту, req и res. Вы устанавливаете shoe var от req.shoe.

Каковы шансы, что upload() возится с вашим req?

Бросьте console.log(req) в правом после вызова загрузки и сообщить

+0

oКоник был правильным, чтобы переменная обуви была первоначально назначена правильно при вызове загрузки. В клиентском контроллере есть функция onsuccess, которая должна обрабатывать переменную отсюда. Я буду продолжать рыть. Существует много слоев абстракции в средстве .js шаблонный пример $ window, user и т. Д. Документация разрежена, поэтому примеры не соответствуют строгому угловому. Если кто-нибудь знает пример CRUD, как сохранить изображения в файловой системе с multer и путь к полю в документе MongoDB, это будет отличным сервисом. – adamfhelm

Смежные вопросы