Mongodb Restangular为以“开始”的键发送空负载$&引用;
我正在使用Restanglar与Mongolab连接。我想使用以下代码推送更新:Mongodb Restangular为以“开始”的键发送空负载$&引用;,mongodb,angularjs,mlab,restangular,Mongodb,Angularjs,Mlab,Restangular,我正在使用Restanglar与Mongolab连接。我想使用以下代码推送更新: var theData = {"$push":{exercises :{type: "running"}}}; Restangular.all('employees').one(user._id.$oid).customPUT(theData ,null, {apiKey: apiKey}); 当我运行这个程序并查看XHR请求时,负载总是设置为{} 但是,如果我取出$,我的有效负载如下所示: {"push":{e
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”的字段,而不是将其推送到exercises数组中,因为我没有使用“$push”关键字
我可以在字符串中的任何位置使用“$”,但前面除外(例如“$push”和“push$”有效),但不幸的是,这正是mongo推送更新所需要的。是否有我缺少的一些设置,或者这是Restanglar中的一个错误?是的,将对$进行条带化:在发送数据之前,将使用
angular.toJson
函数转换数据:
@名称:angular.toJson
@作用
@描述
将输入序列化为JSON格式的字符串。将删除前导$字符的属性
因为angular在内部使用此符号
如果不希望出现这种行为,则必须提供transformRequest函数()。如果您的数据已经是json,您可以只写:
transformRequest: function(data){
return data;
}
transformRequest必须在资源配置期间作为选项提供。见这是正确的……似乎有问题的代码在。由于它只在对象上去除了这一点,如果在将其添加到put请求之前我自己用JSON.stringify()对其进行字符串化,它将不会出现任何问题。谢谢你给我指明了正确的方向。