【发布时间】:2018-02-04 08:49:26
【问题描述】:
我有一个 angular-meteor 应用程序,它需要来自具有 53,296 个文档的集合中的 Material md-autocomplete,angularUtils.directives.dirPagination 但是这么多的数据使我的浏览器挂起。
我正在发布收藏:
Meteor.publish('city', function (options, searchString) {
var where = {
'city_name': {
'$regex': '.*' + (searchString || '') + '.*' ,
'$options': 'i'
}
};
return City.find(where, options);
});
我订阅:
subscriptions: function () {
Meteor.subscribe('city');
this.register('city', Meteor.subscribe('city'));
}
并在控制器上进行分页:
$scope.currentPage = 1;
$scope.pageSize = 100;
$scope.sort = {city_name_sort : 1};
$scope.orderProperty = '1';
$scope.helpers({
city: function(){
return City.find({});
}
});
但是加载需要很长时间,并且它使 chrome 停止工作。
【问题讨论】:
-
可能在服务器上分页?所以你只会发送你从服务器显示的信息?另外,也许可以确定当搜索为空时,不要将所有结果都发回
-
通常在大型集合上使用自动完成功能,您会在服务器上执行搜索并仅返回匹配的记录。将所有数据发布到客户端会很慢。您可以将要发布的字段数限制为仅自动完成的一个字段。
-
感谢分享想法实际上现在分页有助于不破坏浏览器但加载所有数据需要时间但@MichelFloyd 我真的不知道如何在服务器上搜索。意思是当我听说 onReady 但我无法实现它,因为我有 1 页要加载我想在页面加载之前加载数据。你能帮我参考一下这两个:onReady & 在服务器上搜索吗?提前致谢
标签: meteor angular-meteor