我正在使用Restangular连接Mongolab。我想使用以下代码推送更新:
var theData = {"$push":{exercises :{type: "running"}}};
Restangular.all('employees').one(user._id.$oid).customPUT(theData ,null, {apiKey: apiKey});
当我运行它并查看XHR请求时,有效负载始终设置为{}。
但是,如果我拿出$,我的有效载荷如下所示:
{"push":{exercises :{type: "running"}}}
在那个例子中,有效载荷看起来很好,但是mongolab认为我想要添加一个名为“push”的字段而不是推送到excercises数组,因为我没有使用“$ push”关键字。
我可以在字符串中的任何位置加上“$”,除了在前面(例如“$ push”和“push $”工作)但不幸的是,这是mongo推送更新所需要的。是否有一些我缺少的设置,或者这是一个在restangular中的错误?
答案 0 :(得分:3)
是的,$将被条带化:在发送数据之前,数据将使用angular.toJson
函数进行转换:
@name angular.toJson
@function
@description
将输入序列化为JSON格式的字符串。具有前导$字符的属性将是 剥离因为角度在内部使用这种表示法。
如果您不想要此行为,则必须提供transformRequest函数(http://docs.angularjs.org/api/ng.$http)。如果您的数据已经是json,您可以写下:
transformRequest: function(data){
return data;
}
必须在资源配置期间提供transformRequest作为选项。看到
http://docs.angularjs.org/api/ngResource.$resource