我有一个角色应用程序,mongo作为DB。
我想达到一种状态,前端可以指定mongo查询并将它们作为对象发送到后端。
例如
{ 'name' : { '$exists' : 1 } }
问题是angular会从查询中删除这些键,因为它使用美元符号表示其自身的功能。
然而,这似乎是一个相关的用例,我相信有一种方法可以使这项工作。
目前,我正在使用$
替换dollar
符号,然后在后端将其替换回$
。傻但是有效。
我该如何改善这个?
在使用stringify
解决方案一段时间之后,我发现确实不太可能在所有角落中保留美元的预定属性!
即使该解决方案适用于此特定问题,其他问题也开始出现。
例如:
{{data}}
上输出它们 - 但这会删除美元前缀属性.. $watch
或angular.equal
时,我会得到错误的结果,因为这些方法会忽略美元前缀属性.. 你可以使用[{1}}或者你可以使用angular.equal(JSON.stringify(obj1), JSON.stringify(obj2) )
,但在我看来这太过分了。我回到我使用$scope.$watch(function(){ return JSON.stringify($scope.data); }, ... )
前缀的旧方法。它是可读的,并与其他角度很好地配合。编写转换方法很简单。
您也可以使用dollar_
代替_$
。在mongo世界中请记住,将dollar_
转换为_$
不应该只是移除$
字符,因为mongo使用_
将其转换为_id
。 。
答案 0 :(得分:1)
您可以定义自己的请求转换器。默认的是这一个:
function(d) {
return isObject(d) && !isFile(d) ? toJson(d) : d;
}
其中toJson
只调用JSON.stringify
,从而删除了一些属性。您可以使用简单toJson(d)
替换此JSON.stringify(d)
来电。
docs解释如何永久或按请求覆盖默认值。
答案 1 :(得分:1)
如何做到
JSON.stringify(myObject);
并发送?