Сбой операции PUT/ update в клиенте AngularJS $ resource в приложении, основанном на отдыхе (проблема вставки / обновления mongoose).

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

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


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

    // Схема
        var productSchema = new mongoose.Schema ({
          имя: строка,
          колледж: Струнный,
          возраст: число
        });

    // Возвращаем модель
    module.exports = restful.model ('Продукты', productSchema);

Узел-экспресс-код


     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:// локальный /rest_test');
        var autoIncrement = require('mongoose-auto-increment');

        // Экспресс
        var app = express();
        app.use(methodOverride('_ метод'));
        app.use (CORS ());
        app.use(bodyParser.urlencoded({ extended: true }));
        app.use(bodyParser.json());

        // Маршруты
        app.use('/api', require('./ маршруты / api'));

        // Запустить сервер
        app.listen(4000);
        console.log("API работает на порте 4000");
    

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


     $scope.updateData = function (userID) {

                $scope.actionData = {
                    "имя": $scope.name,
                    "колледж": $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 = "Невозможно получить файлы (код: " + response.status + "). Пожалуйста, попробуйте позже.";
                });
            }

    angular.module ('MyApp')
            .factory('RoleEditF', function (updateS) {
                вернуть {

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

                        вернуть updateS.save(parm, data,
                            function (res) {
                                вернуть cb(res);
                            },
                            function (err) {
                                вернуть cb(err);.}.Bind (это)) $ обещание;
                    } 
                }
            })


 

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


     angular.module ('MyApp')
        .factory('updateS',function($resource) {
          return $resource('http://localhost:4000/api/products/:userId', { userId: '@userId' }, {
            Обновить: {
              метод: "PUT" 
            }
          }, {
            stripTrailingSlashes: false
          });
        });

Я получаю следующую ошибку в браузере

"Ошибка сети: 404 не найдена - http://localhost:4000/api/products/57161e0fe4fbae354407baa3"

1 ответ

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

        'update': {
          method: 'PUT' 
        }

внутри вашей фабрики $resource()

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

под созданием пользовательского запроса "PUT"

Другие вопросы по тегам