Javascript 角度$resource放置400个错误请求($resolve和$promise已发送)

Javascript 角度$resource放置400个错误请求($resolve和$promise已发送),javascript,json,angularjs,resources,bad-request,Javascript,Json,Angularjs,Resources,Bad Request,我有以下已删除变量的服务: angular .module('app') .factory('Employee', function($resource) { return $resource("https://api.mongolab.com/api/1/databases/:dbName/collections/:collectionName/:id", {apiKey: apiKey, dbName: dbName, collectionNa

我有以下已删除变量的服务:

angular
    .module('app')
    .factory('Employee', function($resource) {
        return $resource("https://api.mongolab.com/api/1/databases/:dbName/collections/:collectionName/:id",
        {apiKey: apiKey, dbName: dbName, collectionName: collectionName},
        { update: { method: 'PUT' } });
});
我的添加/编辑表单控制器中有以下代码,用于创建/检索员工:

if($stateParams.id === "add") {
    $scope.employee = new Employee();
} else {
    $scope.employee = Employee.get({id: $stateParams.id});
}
现在,在我的表单上有一个保存按钮,该按钮附带以下功能:

if($scope.employee._id) {
    $scope.employee.$update({id:$scope.employee._id});
} else {
    $scope.employee._id = $scope.employee.jmbg;
    $scope.employee.$save();
}
添加功能按预期工作,但当我更新现有员工时,会出现以下错误:

400 Bad Request - Invalid object { "_id" : "000" , "jmbg" : "000" , "name" : "Bilbo" , "surname" : "Hagins" , "email" : "bibi@bibi.com" , "$promise" : { } , "$resolved" : true} - Document field names can't start with '$' (Bad Key: '$promise')
现在,我的$scope.employee确实包含这两个字段,但这是我第一次遇到这样的错误,我已经在其他项目上使用了此功能,即使是在后端使用相同的MongoLab API的项目上,而且据我所知,代码与其他项目和此项目没有任何区别


另外请注意,我的angular应用程序中没有任何配置。

执行PUT请求时,angularjs自动添加$PROMITE和$RESOLVERD

因此,在结束时,您应该确保删除这些属性

如下面的示例,使用express的路由器

router.route'/contact/:id'.putfunctionreq,res{ var触点=所需主体; 删除联系人。$promise; 删除联系人。$已解决; //更新数据库 };


但不知道为什么angularjs会在PUT请求中添加$PROMITE和$RESOLVERD。

也许您混合了angularjs和AngularResource的版本。在1.3之前,所有以$开头的属性都没有通过Angular发送到服务器。现在,资源服务必须删除这些属性本身。可能是您在参数{apiKey:apiKey,dbName:dbName,collectionName:collectionName}中缺少id,使用更新记录时需要id$update@zeroflagL就是这样,我的角度资源是1.2.x而不是1.4.x。。。