我正在使用“ jQuery Query Builder”(在UI中)根据用户输入生成自定义对象,我需要将此对象作为“ json-rules-engine”(在服务器中)的输入来生成基于对象条件的结果。但是问题是查询生成器以不同的格式提供输出,而规则引擎以其他格式提供了输入。
我能够遍历对象的所有节点并获得“键/值”。但是我无法使用这些“值”来生成具有不同结构的新对象。
rails db:test
当前,我可以遍历所有节点并读取所有“键/值”。但是我需要将此对象转换为以下内容:
预期输出:
require 'test_helper'
class ArchiveTest < ActiveSupport::TestCase
test "the truth" do
assert true
end
end
答案 0 :(得分:0)
我很快就刺了一下。请参阅我的工作示例:https://jsfiddle.net/30m1z25r/
您的递归函数printObj
处在正确的轨道上。
我创建的函数:
/**
* Format a jQuery Query Builder object for json-rules-engine
*
* @param {Object} query Pass the query builder object
* @return {Object} Formatted object
*/
function formatQuery(query) {
var condition = (query.condition || '').toLowerCase();
var rules = query.rules || [];
var type = condition === 'and' ? 'all' : 'any';
if (condition) {
// Create an empty object for appending values
var build = {};
// Create empty array for storing formatted children
build[type] = [];
// Loop through rules and append formatted objects
for (var i = 0; i < rules.length; i++) {
var rule = rules[i];
build[type].push( formatQuery(rule) );
}
// Return fully formatted object
return build;
}
// If no condition, return self
return query;
}
*此功能尚未经过全面测试,因此您可能需要进行一些调整