Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Restangular为以“开始”的键发送空负载$&引用;_Mongodb_Angularjs_Mlab_Restangular - Fatal编程技术网

Mongodb Restangular为以“开始”的键发送空负载$&引用;

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

我正在使用Restanglar与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”的字段,而不是将其推送到exercises数组中,因为我没有使用“$push”关键字


我可以在字符串中的任何位置使用“$”,但前面除外(例如“$push”和“push$”有效),但不幸的是,这正是mongo推送更新所需要的。是否有我缺少的一些设置,或者这是Restanglar中的一个错误?

是的,将对$进行条带化:在发送数据之前,将使用
angular.toJson
函数转换数据:

@名称:angular.toJson

@作用

@描述

将输入序列化为JSON格式的字符串。将删除前导$字符的属性 因为angular在内部使用此符号

如果不希望出现这种行为,则必须提供transformRequest函数()。如果您的数据已经是json,您可以只写:

transformRequest: function(data){
   return data;
}
transformRequest必须在资源配置期间作为选项提供。见

这是正确的……似乎有问题的代码在。由于它只在对象上去除了这一点,如果在将其添加到put请求之前我自己用JSON.stringify()对其进行字符串化,它将不会出现任何问题。谢谢你给我指明了正确的方向。