我有以下服务(除去变量):
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});
}
,我的形式我有一个Save
按钮附加了如下功能:
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" : "[email protected]" , "$promise" : { } , "$resolved" : true} - Document field names can't start with '$' (Bad Key: '$promise')
现在,我$scope.employee
确实含有这两个领域,但是这是我第一次遇到这样的错误,我已经在其他项目上有这个功能(即使是在后端使用相同的MongoLab API,并且据我所知,这个项目和这个项目的代码没有任何区别) 。
另请注意,在我的角度应用程序中没有任何配置。
也许你在混合Angular和Angular Resource的版本。在1.3之前,所有以'$'开头的属性都没有被Angular发送到服务器。现在资源服务必须自己删除这些属性。 – zeroflagL
可能是你缺少params中ID {apiKey:apiKey,DBNAME:数据库名,集合名:集合名},以$更新更新记录 –
@zeroflagL就是这样,我有角资源1.2.x的,而不是当需要ID 1.4.x的... – user2352164