2

我是 MEAN 应用程序的新手。这里我有一个基于 REST 的示例应用程序,它使用 node-restful 库,我可以在其中执行除“放置”之外的操作(获取、保存、删除)。然而,“放置”操作在休息客户端(高级 REST、邮递员)上运行良好,但在 Angular 客户端上运行良好。

猫鼬模型


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

    // 架构
        var productSchema = new mongoose.Schema({
          名称:字符串,
          大学:字符串,
          年龄:数字
        });

    // 返回模型
    module.exports = restful.model('Products', productSchema);

节点快递代码


     var express = require('express');
        var methodOverride = require('方法覆盖');
        var 猫鼬 = 要求('猫鼬');
        var bodyParser = require('body-parser');
        var cors =require('cors');


    // MongoDB

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

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

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

        // 启动服务器
        app.listen(4000);
        console.log('API 正在 4000 端口上运行');
    

更新数据的角度函数


     $scope.updateData = 函数(用户 ID){

                $scope.actionData = {
                    “名称”:$scope.name,
                    “学院”:$scope.college,
                    “年龄”:$scope.age
                }


                RoleEditF.updateUserData({
                    用户ID:用户ID
                }, $scope.actionData).then(function (response) {
                    $scope.userData = 响应;
                    控制台.log($scope.userData)
                    $scope.getData();
                }).catch(函数(响应){
                     $scope.error = "无法获取文件(代码:" + response.status + ")。请稍后再试。";
                });
            }


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

                    updateUserData:函数(参数,数据,回调){
                        var cb = 回调 || 角.noop;

                        返回 updateS.save(参数,数据,
                            功能(资源){
                                返回 cb(res);
                            },
                            功能(错误){
                                返回 cb(err);
                            }.bind(this)).$promise;
                    }
                }
            })


 

工厂调用 API


     angular.module('myapp')
        .factory('updateS',function($resource) {
          return $resource('http://localhost:4000/api/products/:userId', { userId: '@userId' }, {
            更新: {
              方法:'PUT'
            }
          }, {
            stripTrailingSlashes:假
          });
        });

我在浏览器上收到以下错误

“网络错误:404 未找到 - http://localhost:4000/api/products/57161e0fe4fbae354407baa3”

4

1 回答 1

2

它必须是“更新”

        'update': {
          method: 'PUT' 
        }

在你的 $resource() 工厂内

此处的文档 https://docs.angularjs.org/api/ngResource/service/$resource

创建自定义“PUT”请求下

于 2017-08-03T18:26:47.200 回答