如何将美元前缀键传递给后端与角度

时间:2014-09-13 14:49:05

标签: angularjs

我有一个角色应用程序,mongo作为DB。

我想达到一种状态,前端可以指定mongo查询并将它们作为对象发送到后端。

例如

{ 'name' : { '$exists' : 1 } } 

问题是angular会从查询中删除这些键,因为它使用美元符号表示其自身的功能。

然而,这似乎是一个相关的用例,我相信有一种方法可以使这项工作。

目前,我正在使用$替换dollar符号,然后在后端将其替换回$。傻但是有效。

我该如何改善这个?

修改

在使用stringify解决方案一段时间之后,我发现确实不太可能在所有角落中保留美元的预定属性! 即使该解决方案适用于此特定问题,其他问题也开始出现。

例如:

  • 当我想暂时在范围内显示值时,我只是在页面{{data}}上输出它们 - 但这会删除美元前缀属性..
  • 当我使用$watchangular.equal时,我会得到错误的结果,因为这些方法会忽略美元前缀属性..

你可以使用[{1}}或者你可以使用angular.equal(JSON.stringify(obj1), JSON.stringify(obj2) ),但在我看来这太过分了。我回到我使用$scope.$watch(function(){ return JSON.stringify($scope.data); }, ... )前缀的旧方法。它是可读的,并与其他角度很好地配合。编写转换方法很简单。

您也可以使用dollar_代替_$。在mongo世界中请记住,将dollar_转换为_$不应该只是移除$字符,因为mongo使用_将其转换为_id。 。

2 个答案:

答案 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);

并发送?