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

时间:2012-11-27 05:25:51

标签: node.js mongodb rest dojo

我正在尝试使用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

因此问题是:它会给出一个范围(这就是它可以做的所有事情),并将根据从服务器接收的内容在客户端显示内容。 期望一个cliend side JsonRest对象发出除“range”之外的请求是不现实的。但是,我知道对于Mongoose来说,skip / limit并不是很好:

What is the best way to do ajax pagination with MongoDb and Nodejs?

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

任何智慧的珍珠,除了完全放弃dgrid并在不使用Dojo商店的情况下自行实施分页?

Merc的。

1 个答案:

答案 0 :(得分:2)

前端

dgrid中的过滤功能不像dojo EnhancedGrid过滤器插件中那样功能已满,因此您可能需要自己实现该部分。

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

后端

文档似乎表明,你最好的表现就是使用索引和查询做一些技巧来获得你的范围。

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

由于日志数据通常是顺序的并且很少被修改,因此您可能只需对每行日志数据使用单调递增的索引,并使用这些索引进行查询以获得正确的偏移量和行数。