我目前正在为Odata构建一个查询构建器。
我从这个项目中获取灵感:
http://mfauveau.github.io/angular-query-builder/
我现在对查询有一个json解释。
但我使用odata的框架有不同的格式。
我的问题是查询可以无限嵌套。
我需要这种输出:
{ or: [
age: { ">": 40 },
and: [
{ lastName: { startsWith: 'A'}},
{ hireDate: { '<': new Date(2010, 0, 1) }}
]
]
}
我有这样的意见:
{
"rules": [
{
"condition": "=",
"field": "ID",
"data": "1",
"$$hashKey": "object:244"
},
{
"condition": "=",
"field": "ID",
"data": "1",
"$$hashKey": "object:310"
},
{
"group": {
"operator": "AND",
"rules": [
{
"condition": "=",
"field": "ID",
"data": "1",
"$$hashKey": "object:392"
},
{
"condition": "=",
"field": "ID",
"data": "1",
"$$hashKey": "object:456"
}
]
},
"$$hashKey": "object:363"
}
],
"operator": "OR"
}
我需要一些建议来解决这个问题。
所以,如果你有一个链接或一些可以帮助我的想法。
我将不胜感激。
答案 0 :(得分:0)
function convertQueryBuilderToBreeze(filtre) {
var jsonObject = {};
if (filtre.rules && filtre.operator) {
jsonObject[filtre.operator] = filtre.rules.map(function (rule) {
if (rule.condition) {
var condition = {};
var obj = {};
obj[rule.condition] = rule.data;
condition[rule.field] = obj;
return condition;
} else if (rule.group) {
return convertQueryBuilderToBreeze(rule.group);
}
});
}
return jsonObject;
}