Сбой операции 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"