Aus*_*vis 6 mongoose query-string express angularjs
这是我试图转换为查询字符串的javascript对象
{$and: [{topic: categoryIds} , {$or :[ {'groups 1': {$ne: ''}}, {groups: $scope.myGroups}]}]};
Run Code Online (Sandbox Code Playgroud)
基本上我希望匹配一个等于categoryIds的主题,并抓取具有空组数组的文档,或者groups数组具有值并匹配数组$ scope.mygroups中的一个
我的问题是,以易于解析的格式转换它的最佳做法是什么,以便我可以将它附加到GET请求,以及如何在快速服务器上解析它.
我在生产中使用此代码来查询具有 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;
}
})
Run Code Online (Sandbox Code Playgroud)
它包括其他人在评论中提到的许多建议,并支持日期和正则表达式。
除此之外,如果您需要使用 GET 请求发送查询,只需encodeURIComponent像其他人提到的那样使用即可。
这是一个工作示例:http://plnkr.co/edit/b9wJiUkrHMrDKWFC1Sdd ?p=preview
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |