【发布时间】:2013-02-03 15:52:26
【问题描述】:
我正在考虑如何动态更改 div 的内容。所以,这里是ajax请求:
$.ajax({
url:'/foos',
cache: false,
type: 'get',
}).done( function( foo_array ) {
for( foo in foo_array ) {
$('#foo-container').append('<div class="foo-var">'+foo+'</div>');
}
});
所以基本上,这个 ajax 会附加来自服务器的所有 foo-var div,但是如果 foo_array 太长或很大的数组会出现问题,因为我认为这需要越来越多的时间取决于 foo_array 的长度
如何逐个追加??,如何逐个查询并追加到 foo-container 中,而不是查询所有 foo 并进行迭代??
我想做这样的事情
if(foos.hasNext()){ $.ajax..... append(foo)....}
foos 是一个由 mongodb 数据库中的许多文档组成的数组,所以我无法获得数组的长度,因为取决于查询的 find() 参数..
我正在使用 nodejs、mongodb、expressjs 和 jquery 进行 ajax
对不起,我的英语不好,谢谢大家!
编辑 2
这是一个mongodb中的数据示例
{category:1, name:'robert',personal:true,option:'class'}
{category:1, name:'alfredo',personal:false,option:'class'}
{category:4, name:'ricardo',personal:true,option:'class'}
{category:1, name:'genaro',personal:true,option:'class'}
{category:2, name:'andres',personal:false,option:'class'}
{category:1, name:'jose',personal:true,option:'class'}
db.collection.find({personal:true}) // gives me 4 documents
db.collection.find({option:'class'}) // gives me 6 documents
db.collection.find({category:4}) // gives me 1 document
不知道游标能得到多少个文档,需要一一收费,因为databse中有5097841个文档,所以ajax返回所有信息需要很长时间,需要一一查询if hasNext() 在 mongodb 的游标中
【问题讨论】:
-
我建议进行某种分页,每次请求加载 10-15 个项目
-
我不能使用分页,我必须从数据库中收取所有文件
-
如果
foo_array确实是一个您不想使用for/in的数组。显示数据样本。关于分页的评论也可以通过多个AJAX请求来完成$.each很容易实现api.jquery.com/each -
我可以使用 socket.io 来做到这一点吗?我正在阅读许多在 socket.io 上发送变量的方法
-
可能有多种方法可以解决这个问题。 (1) 基于数据库的分页,您在客户端维护数据的起始索引和结束索引。您发送这些索引以获取下一组数据 (2) 服务器端分页,您从数据库中获取所有数据并执行后续提取 (3) 基于 Javascript 的分页 - 您必须测试其性能。将数组存储为 Javascript 对象并根据获取的最后一个索引进行检索
标签: javascript ajax node.js mongodb jquery