现在正在使用crossfilter处理项目 . 由于要使用的数据可以变得非常大,我正在尝试在服务器端移植交叉过滤器 . (最后我希望能够直接从mongodb服务这些团体和维度) .
图表工作到目前为止,但我在过滤图表的多个值时遇到问题 . 澄清am“覆盖”,或者更好地说为dc.js创建一个虚函数,它使用给定的过滤器查询服务器 .
var markerClickedDimension = {
filter: function(f){
if(f){
queryFilter["markerClickedDimension"]=f;
refresh(queryFilter);
}
},
filterAll: function(){
},
filterFunction: function(f){
if(f){
// get the filters
}
}
};
var markerClickedGroup = {
all: function(){
//filteredDate -> Groups returned from the server
return filteredData["markerClickedGroup"].values;
},
order: function(){
},
top: function(){
}
};
运行调试器我注意到我需要的数组是在函数范围闭包下 . 但我失去了如何访问它 .
我的论文很匆忙,如果这个问题过于宽泛,那就很抱歉 .
1 回答
在我看来,您应该考虑自定义filterHandler而不是尝试对crossfilter维度进行建模 .
https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#basemixinfilterhandler--function--basemixin
我的理由是你无法将函数传递到服务器,而你真的不想解析函数来找出它们的作用 . 相反,请查看放在filters数组中的过滤器对象(和简单值) .
免责声明:我开始编写自己的服务器端交叉滤波器替代品,但我还没有完成所有的研究 . 只是我对迄今为止拦截过滤调用的最佳位置的印象 .
社区正在等待一些承诺使用mongodb,elasticsearch等发布自己的解决方案的人 .
这是一个相当长的主题 . Blair Nilsson在9/9/14的帖子中提出了一个解决方案(实际上采用了不同的方法),其中一些人报告了成功 . https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/dc-js-user-group/fkRoFHuqg4k/lqbuoNKBCQAJ