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"
Avez-vous essayé par http: // localhost: 4000/api/products/url 57161e0fe4fbae354407baa3 dans postier –
oui, il fonctionne sur postier –