6.30.15 - 我如何使这个问题更好,更有益于其他人?反馈会有所帮助。谢谢!
我正在开发一个处理/管理非常大的数据集的Web应用程序 - 目前任何类型的重负载都会导致浏览器锁定 - 无论我是在Django Rest Framework API中还是在Dojo /中Dgrid。这是一个双重问题。
我已经研究过,无法在任何一方找到明确的方法。
如何限制数据库一次发送到Django Rest Framework和/或Dojo Dgrid的数量。 Dgrid从Django Rest API中提取数据。 DRF直接从MySQL数据库中提取数据。
如果我可以控制一次发送多少数据,那么希望它不会锁定浏览器。任何建议,建议,帮助,示例都会非常有帮助。提前谢谢!
更新6.22.15 -
好吧,我终于得到了分页工作,它显示了标题中的限制/偏移量。 :) 好极了!!!!我还可以在Response标头中看到数据。然而......网格不会填充,我不断得到这个奇怪的错误: TypeError:transform(...)为null
return transform(value, key).toString();
instrum...tion.js (line 20)
之前我已经收到此错误,但我从来没有找到解决方案。经过研究,我无法找到如何修复或甚至是什么。任何帮助都将非常感谢!!在WEEKS和WEEKS将我的头靠在墙上之后,我非常接近让这件事正常工作。请帮忙! :)提前致谢!!!
第二次更新 - 这是之前帖子的答案 - 但我仍然不确定如何修复它。当我解决另一个问题时 - 它已经消失了一段时间,但我仍然不知道如何纠正这个问题。
Problem 3: "transform(...) is null return transform(value, key).toString();"
This sounds largely tangential to the original issue, but the most common cause is a widget template that is referencing a property via ${...} that doesn't actually exist in the widget.
答案 0 :(得分:2)
我不知道如何在DRF和数据库之间的层上回答这个问题,但正如其他SO问题(如this one中所讨论的那样),DRF允许您限制通过页面或请求发送的数据量偏移/限制参数。
根据您的问题的措辞,听起来客户端实际上要求太多数据。我将概述流程应该如何工作,所以希望你能发现你错过的东西:
collection
引用了dstore/Rest
实例dstore/Rest
实例是使用appropriate properties set创建的。在这种情况下,基于DRF Documentation:
useRangeHeaders: false
(这已经是默认设置)rangeStartParam: 'offset'
rangeCountParam: 'limit'
endpoint?offset=0&limit=25
- 如果您没有看到这两个参数,那就是您获取太多数据的原因total
属性反映,假设在之前的定制中所以我联系使用了答案)最终,如果服务按预期工作,则网格应该一次仅请求少量项目,并且应该只触发一个或两个请求在任何给定的时间。
答案 1 :(得分:1)
会添加评论,但目前没有足够的声誉....
您的问题非常普遍,但一种策略是允许用户一次选择他们希望查看的项目数,然后允许用户使用“下一个x项”和“上一页”来浏览数据x项的按钮。然后,您的数据对象查询将使用当前位置+/-'x'作为索引范围,以减少发送到浏览器的数据对象的数量。这是Ebay,亚马逊,Google或任何需要显示数千个项目的网站的基本流程。 “下一个”和“上一个”操作可以作为POST请求连接。