一边是Dojo JsonRest,另一边是Mongodb:分页/过滤



我正在试用Dojo的dgrid(非常棒!)。我在服务器端使用Nodejs/Mongoose。我想写一个"日志浏览器":我有一个很大的mongodb表,其中包含很多日志条目;使用dgrid,我希望能够1)通过某些参数进行过滤2)使用dgrid的原生分页进行分页。

因此出现了问题:dojo的JsonRest商店将发送这样的请求:

Accept:application/javascript, application/json
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
...
Host:localhost:3000
Range:items=0-24

因此出现了问题:它会给出一个范围(实际上,这就是它所能做的),并根据从服务器接收到的内容在客户端显示内容。期望客户端JsonRest对象发出"范围"以外的请求是不现实的。然而,我知道Mongoose:的跳过/限制并不太好

使用MongoDb和Nodejs进行ajax分页的最佳方法是什么?

我的想法是渲染dgrid,允许用户选择过滤器,并让他们愉快地在日志中分页。然而,跳过/限制是不可能的,我有点为难。。。

除了完全抛弃dgrid并在不使用Dojo商店的情况下自行实现分页之外,还有什么智慧之珠吗?

Merc。

前端

dgrid中的过滤不像dojo EnhancedGrid过滤器插件中那样功能齐全,所以您可能需要自己实现这一部分。

好消息是,在创建网格时,只需混合使用"dgrid/OnDemandGrid"即可获得分页。

后端

这些文档似乎表明,为了获得性能,最好的选择是使用索引和基于这些索引的查询来获得范围。

你可能已经提到了这些,但它们在这里
http://mongoosejs.com/docs/api.html#query_Query-跳过
http://docs.mongodb.org/manual/reference/method/cursor.skip/

由于日志数据通常是连续的,很少修改,所以您可能只需要对每一行日志数据使用单调递增的索引,并使用这些索引进行查询,以获得行的正确偏移量和计数。

最新更新