Javascript 为什么ngModel在AngularJS中作为$resource发送时没有正确更新我的变量?

Javascript 为什么ngModel在AngularJS中作为$resource发送时没有正确更新我的变量?,javascript,rest,angularjs,Javascript,Rest,Angularjs,下面是我如何定义$resource的: app.factory('User', function($resource){ return $resource('/api/user', {}, { get: { method:'GET'}, update: { method:'PUT'}, }) }) 这是我的控制器: function SettingsCtrl($scope, $http, User) { $scope.user = Use

下面是我如何定义$resource的:

app.factory('User', function($resource){
    return $resource('/api/user', {}, {
        get: { method:'GET'},
        update: { method:'PUT'},
    })
})
这是我的控制器:

function SettingsCtrl($scope, $http, User) {
    $scope.user = User.get(
        {}, //Params

        function(data) { //Successfully received data

        },
        function(data) { //Failure to receive data

        }
    );

    $scope.saveUser = function() {
        $scope.user.$update();
        console.log($scope.user);
    };
}

控制器顶部的
User.get()
调用正确地从后端获取数据。在我的HTML中,我制作了一个按钮来调用
$scope.saveUser
函数,并使用
ng model
创建了一些输入,看起来双向数据绑定工作正常。当我在
$scope.saveUser
函数中调用
console.log($scope.user)
时,它返回的用户对象与我在浏览器中所做的更改完全一样。但是,在我的节点后端,我记录了在PUT请求中接收到的对象,并且它不反映我在浏览器中所做的任何更改,它看起来与原始对象相同。单击浏览器中的按钮后,数据将重置为其原始值。发生了什么事?为什么它不发送我在浏览器中键入的更新数据?

根据您的评论:

编辑表单并点击Save(调用
saveUser
)后,这里是浏览器中的
console.log($scope.user)

下面是节点作为
console.log(req.user)
记录的内容:


req.user
通常是附加到请求对象的对象,用于指定当前登录的用户是谁,并且通常由中间件管理。由于您正在执行一个
PUT
请求,因此您正在
req.body

中查找数据。您可以发布Node.js控制台关于调用
saveUser
时收到的
PUT
的输出吗?我有一些想法,但我不确定该往哪个方向走。:)当然这是我编辑表单并点击Save(调用
saveUser
)后浏览器中的
console.log($scope.user)
):
[14:28:56.097]({uuuuu v:0,u-id:“50b1a966c12efuc42600007”,密码:“新修改的密码”})
,下面是节点记录为
console.log(req.user)
{“50b1a966c12ef0c426000007”,密码:“originalPassword”})
我的意思是,这不会给你比问题中更多的信息。你想要包含所有标题和垃圾的完整PUT请求吗?它真的很长。我注意到你正在记录
req.user
;这抛出了一个黄色标志,我想确保这是正确的对象。它似乎应该是
req.body.user
——in我的应用程序,
req.user
通常是通过中间件连接到
req
对象的东西,用来说明“当前用户”是什么。谢谢你,先生!你说得对,
req.user
是中间件会话的东西。
req.body
最终成为了我所寻找的东西。我正在努力。
{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"}
{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"})