2016-07-27 23 views
0

zu aktualisieren. Wenn mir jemand helfen könnte, wäre ich ewig dankbar. Ich habe wochenlang mit dem Kopf gegen eine Wand gestoßen und versucht, Bilder hochzuladen, wie es mit dem MEAN.js-Benutzermodul direkt aus der Box kommt. Im generierten Benutzermodul wird die Datei in ein Verzeichnis hochgeladen und der Pfad zu dieser Datei wird in einem Feld im mongodb-Dokument gespeichert. Ich kann die Datei zum Hochladen mit multer und der Dateiupload-Funktion hochladen. Ich kann jedoch den Pfad zu dem Feld innerhalb des Dokuments nicht speichern. Ich kann nicht herausfinden, wie man vermeidet, eine 'undefinierte' Variable zu bekommen. Ich habe versucht, einen $ window service zu erstellen und Daten an ihn als globale Variable und eine Menge anderer Dinge zu übergeben, und ich bin total festgefahren.Undefinierte Variable erhalten, die versucht, den Pfad zu einer hochgeladenen Datei in MongoDB mit angular-file-upload und MEAN.js

Ich habe den folgenden Code kommentiert, um zu demonstrieren, was in meinem Server Controller ChangeShoePicture Funktion schief geht.

// 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

Können Sie das Debuggen hinzufügen, um mehr 'console.log setzen (Schuh)'? Basis für das Snippet, das Sie zur Verfügung gestellt haben, ist die Upload-Funktion. – oKonyk

+0

Haben Sie Ihren Code auf öffentlichen GitHub? Das ist ein interessanter Fall ... – oKonyk

Antwort

0

Um sicherzustellen, dass ich dieses Recht habe:

Die Upload-Funktion auf Ihre Parameter von Ihrer Route, req und res weitergegeben aufgerufen wird. Sie setzen die shoe var von req.shoe.

Was sind die Chancen, dass upload() ist mit Ihrem Requ ??

ein console.log(req) in der rechten Drop-nach-Upload anrufen und berichten

+0

oKonyk war korrekt, die Schuhvariable wird beim Hochladen anfänglich korrekt zugewiesen. Es gibt eine Onsuccess-Funktion im Client-Controller, die von hier aus mit der Variable umgehen muss. Ich werde weiter graben. Es gibt viele Abstraktionsschichten in dem mean.js-Beispiel $ window, user usw. Die Dokumentation ist spärlich und es gibt auch Beispiele außerhalb von striktem Angular. Wenn jemand ein CRUD-Beispiel zum Speichern von Bildern im Dateisystem mit multer und den Pfad zu einem Feld in einem MongoDB-Dokument kennt, wäre es von großem Nutzen. – adamfhelm