以下是我尝试转换为查询字符串
的javascript对象{$and: [{topic: categoryIds} , {$or :[ {'groups 1': {$ne: ''}}, {groups: $scope.myGroups}]}]};
基本上我希望匹配一个等于categoryIds的主题并抓取具有空组数组的文档,或者groups数组具有值并匹配数组中的一个$ scope.mygroups
我的问题是以易于解析的格式转换它的最佳做法是什么,以便我可以将它附加到GET请求,以及如何在快速服务器上解析它。
答案 0 :(得分:0)
我在生产中使用此代码来查询具有MongoDB后端的服务器(使用angular和lodash):
.factory('mongoQuery', function() {
return {
fromJson: function(json) {
return JSON.parse(json, fromJsonReviver);
},
toJson: function(object) {
return JSON.stringify(object, toJsonReplacer);
}
};
function fromJsonReviver(key, value) {
var val = value;
if (_.isPlainObject(value)) {
if (_.isNumber(value.$date)) {
val = new Date(0);
val.setUTCMilliseconds(value.$date * 1000);
} else if (_.isString(value.$regexp)) {
var match = /^\/(.*)\/([gimy]*)$/.exec(value.$regexp);
val = new RegExp(match[1], match[2]);
}
}
return val;
}
function toJsonReplacer(key, value) {
var val = value;
if (_.isPlainObject(value)) {
val = _.extend({}, value);
for (var k in value) {
val[k] = toJsonReplacer(k, val[k]);
}
} else if (_.isDate(value)) {
val = {$date: (new Date(value)).valueOf() / 1000};
} else if (_.isRegExp(value)) {
val = {$regexp: value.toString()};
}
return val;
}
})
它包含了评论中其他人提到的许多建议,并支持日期和正则表达式。
除此之外,如果您需要使用GET请求发送查询,请像其他人提到的那样使用encodeURIComponent
。
以下是一个工作示例:http://plnkr.co/edit/b9wJiUkrHMrDKWFC1Sdd?p=preview
答案 1 :(得分:0)
您在这里的想法基本上是重新开发API服务器,再加上一些mongodb数据库,并以某种格式查询它。
现在,如果我必须纯粹回答您的问题,并且您真的想要使用您的解决方案,我只需将mongo查询添加到http调用上的where
查询参数{ {1}}如前所述。