Операция PUT / update завершается ошибкой в ​​клиенте $ resource AngularJS в остальном приложении (проблема с вставкой / обновлением мангуста).

Я новичок в приложениях MEAN. Здесь у меня есть пример приложения на основе REST, использующего библиотеку node-restful, в которой я могу выполнять операции (получение, сохранение, удаление), кроме 'put'. Однако операция put хорошо работает на остальных клиентах (расширенный REST, почтальон), но не на угловом клиенте.

мангуст Модель



        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-экспресс-код



     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');
    

угловая функция для обновления данных



     $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;
                    } 
                }
            })


 

Фабрика для вызова API



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

В браузере появляется следующая ошибка

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


person Nagendra Shanbhag    schedule 14.05.2016    source источник
comment
пробовали ли вы использовать URL-адрес localhost: 4000 / api / products / 57161e0fe4fbae354407baa3 в почтальоне   -  person Jahirul Islam Bhuiyan    schedule 14.05.2016
comment
да, работает на почтальоне   -  person Nagendra Shanbhag    schedule 14.05.2016


Ответы (1)


это должно быть "обновление" в

        'update': {
          method: 'PUT' 
        }

внутри вашего $ resource () factory

документация здесь https://docs.angularjs.org/api/ngResource/service/$resource

в разделе Создание персонализированного запроса PUT

person squidwardprops02    schedule 03.08.2017