0

我正在试验 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 商店的情况下自行实现分页之外,还有什么智慧的珍珠?

默克。

4

1 回答 1

2

前端

dgrid 中的过滤功能不如 dojo EnhancedGrid 过滤器插件中的功能齐全,因此您可能需要自己实现该部分。

好消息是,您只需在创建网格时混入“dgrid/OnDemandGrid”即可获得分页。

后端

文档似乎表明,您对性能的最佳选择是对索引和查询进行一些技巧,以获取您的范围。

您可能已经在引用这些,但它们在这里;
http://mongoosejs.com/docs/api.html#query_Query-skip
http://docs.mongodb.org/manual/reference/method/cursor.skip/

由于日志数据通常是连续的并且很少修改,因此您可能只需为每行日志数据使用单调递增的索引,并使用这些索引来获取正确的偏移量和行数。

于 2012-11-29T21:05:10.037 回答