Angular资源查询和MongoDB查询运算符有问题

时间:2014-04-09 13:49:03

标签: javascript angularjs mongodb

我的应用程序中有这个问题:

$scope.characters = Character.query({
    q: { 'user.id': user.id, 'status': { '$ne': 'deleted' } },
    f: { 'foo': 'bar' }
}, function() {
    // do something
});

Character是Angular资源。

Angular在解析过程中剥离'status'部分,因为键'$ ne'以美元符号开头,如下所示:http://code.angularjs.org/1.3.0-beta.5/docs/api/ng/function/angular.toJson

我怎样才能解决这个问题?最好不要改变我的后端(虽然作为最后的手段,我可​​以在那里进行转换,比如说在查询Mongo数据库之前用键中的美元符号替换井号。)

1 个答案:

答案 0 :(得分:0)

查询参数通过URL传递(因为您正在执行GET请求)。为了实现这一目标,您应该编码“不安全”。字符。例如,美元符号不允许在网址中进行编码(请参阅this post)。

我建议您对查询参数进行编码,或者,如果您想避免这种情况,请尝试使用POST请求(虽然这不会非常安静)。

有关如何对URI组件进行编码的更多信息,请查看此MDN条目:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI