2016-05-14 4 views
2

Je suis nouveau pour les applications MEAN. Ici j'ai un exemple d'application basé sur REST utilisant une bibliothèque reposant sur les nœuds dans laquelle je peux effectuer des opérations (obtenir, enregistrer, supprimer) sauf 'mettre'. Cependant l'opération 'put' fonctionne bien sur les clients de repos (REST avancé, postier) mais pas sur les clients angulaires.

mangouste Modèle

 


     var restful = require('node-restful'); 
     var mongoose = restful.mongoose; 

    // Schema 
     var productSchema = new mongoose.Schema({ 
      name: String, 
      college: String, 
      age: Number 
     }); 

    // Return model 
    module.exports = restful.model('Products', productSchema); 

Node-express Code

 


    var express = require('express'); 
     var methodOverride = require('method-override'); 
     var mongoose = require('mongoose'); 
     var bodyParser = require('body-parser'); 
     var cors =require('cors'); 


    // MongoDB 

     mongoose.connect('mongodb://localhost/rest_test'); 
     var autoIncrement = require('mongoose-auto-increment'); 

     // Express 
     var app = express(); 
     app.use(methodOverride('_method')); 
     app.use(cors()); 
     app.use(bodyParser.urlencoded({ extended: true })); 
     app.use(bodyParser.json()); 

     // Routes 
     app.use('/api', require('./routes/api')); 

     // Start server 
     app.listen(4000); 
     console.log('API is running on port 4000'); 

fonction angulaire pour mettre à jour les données

 


    $scope.updateData = function (userID) { 

       $scope.actionData = { 
        "name": $scope.name, 
        "college": $scope.college, 
        "age": $scope.age 
       } 


       RoleEditF.updateUserData({ 
        userId: userID 
       }, $scope.actionData).then(function (response) { 
        $scope.userData = response; 
        console.log($scope.userData) 
        $scope.getData(); 
       }).catch(function (response) { 
        $scope.error = "Unable to get Files (code: " + response.status + "). Please try later."; 
       }); 
      } 

 


    angular.module('myapp') 
      .factory('RoleEditF', function (updateS) { 
       return { 

        updateUserData: function (parm, data, callback) { 
         var cb = callback || angular.noop; 

         return updateS.save(parm, data, 
          function (res) { 
           return cb(res); 
          }, 
          function (err) { 
           return cb(err); 
          }.bind(this)).$promise; 
        } 
       } 
      }) 


fabrique pour appeler l'API

 


    angular.module('myapp') 
     .factory('updateS',function($resource) { 
      return $resource('http://localhost:4000/api/products/:userId', { userId: '@userId' }, { 
      update: { 
       method: 'PUT' 
      } 
      }, { 
      stripTrailingSlashes: false 
      }); 
     }); 

Je reçois l'erreur suivante sur le navigateur

 
"NetworkError: 404 Not Found - http://localhost:4000/api/products/57161e0fe4fbae354407baa3" 

+0

Avez-vous essayé par http: // localhost: 4000/api/products/url 57161e0fe4fbae354407baa3 dans postier –

+0

oui, il fonctionne sur postier –

Répondre