2016-06-24 3 views
0

Ich habe ein Problem 404 mit meiner NodeJS API. Ich weiß nicht, ob ich es richtig mache, ich habe versucht, auf die Dokumentation zu verweisen, und ich habe das Gefühl, dass es knapp ist.MongooseJS Update API

MongoDB Schema

var User = mongoose.Schema({ 

local: { 
    email: String, 
    password: String, 
    handle: String, 
    pic: {data: Buffer, contentType: String} 
} 

});

NodeJS UPDATE API

app.post('/api/users', function(req, res, user) { 
     User.update({email : user.email, 
        password : user.password, 
        handle : user.handle, 
        pic : user.pic}, 
        {$set: { 
         email : req.body.email, 
         password : req.body.email, 
         handle : req.body.handle, 
         pic : req.body.pic, 
         done : false 
        } 

     }, function(err, users) { 
      if(err) { 
       res.send(err); 
      } 
      res.redirect('/profile'); 
     }); 
    }); 

Controller-POST API-Aufruf

$scope.editProfile = function() { 
    $http.post('/api/users', $scope.editFormData) 
     .success(function(data) { 
      console.log(data); 
    }) 
     .error(function(data) { 
      console.log('Error: ' + data); 
    }); 
}; 

Irgendwelche Vorschläge?

Antwort

0

Sie machen keinen korrekten Postanruf. Sie können Ihr Postobjekt nicht in der URL übergeben. Ihr Node Post sollte so aussehen.

Damit ein Post funktioniert, müssen Sie sicherstellen, dass Sie die richtigen Dinge zu Ihrem Node-Projekt hinzugefügt haben. Im obigen Beispiel wird ExpressJS mit require('body-parser') und require('multer') verwendet. Das Beispiel, das Sie zeigen, wird niemals als echter Pfad angezeigt. Als Referenz hier ist, wie Sie einen Knoten bekommen würden.

app.get('/getcall/*', function(){ 
// the * denotes any singleton parameter you wanted to pass in. 
}) 

Hier sind die Referenzen, die ich in allen Projekten meines Knoten verwenden. Dies sind die Grundlagen.

var express = require('express'), 
    bodyParser = require('body-parser'), 
    multer = require('multer'), 
    helmet = require('helmet'), 
    upload = multer(), 
    path = require('path'), 
    request = require('request'), 
    app = express(), 
    http = require('http'); 

Auch für Ihre Winkel Anruf ein $ http.post wie folgt aussieht, und Sie sollten .then statt .success werden.

$http.post('/api', $scope.editFormData) 
     .then(function successCallback(resp) { 
      console.log(resp.data) 
     }, function errorCallback(resp) { 
      console.log(resp) 
     }); 
Verwandte Themen