【发布时间】:2015-09-24 16:48:01
【问题描述】:
我有这种问题,我的数据库有 600k 个结果,我有一个由我创建的 Web 服务 REST,所以我有我的请求查询的文件 json。 现在我的 json 文件在我的 Angular 应用程序移动设备中,但是由于我的编码它冻结了很多,因为我获取了所有整个文件 json 并做一个列表框,在显示整个列表框之后我可以搜索,当我输入任何它冻结的东西时,我的搜索实时工作,我不在乎我是否失去了这个功能,我想搜索而不冻结,但我不知道如何解决这个问题。
我有我的数据库 mysql,我的请求的示例结果是这个(JSON):
[
{
"date": "2009-02-14",
"pool": 2,
"timing": "H",
"federation": "A2",
"id_race": 73633,
"id_com": 91
},
{
"date": "2009-02-14",
"pool": 2,
"timing": "J",
"federation": "A2",
"id_race": 7348,
"id_com": 91
},
{
"date": "2009-02-14",
"pool": 2,
"timing": "J",
"federation": "A2",
"id_race": 2397,
"id_com": 223
},
...
]
我的 AngularJS 控制器 html 是这样的:
<div ui-content-for="title">
<span class="small">Search:<input ng-model="query"></span>
</div>
<div class="scrollable">
<div class="scrollable-content">
<div class="list-group">
<div class="list-group-item" ng-repeat="race in raceList | filter:query">
<br />
<span>{{race.date}} - {{race.federation}} - {{race.pool}} - {{race.timing}}</span>
</div>
</div>
</div>
</div>
而我的控制器js是这样的:
'use strict';
var raceControllerModule = angular.module('raceControllerModule', ['appServiceModule']);
raceControllerModule.controller('raceController',
['$scope', '$routeParams', 'appService', function($scope, $routeParams, appService) {
$scope.raceList = [];
appService.newRacePromise().then(function (response) {
$scope.raceList = response.data;
});
}]);
当我搜索时,我不想冻结,所以像我在输入之前使用按钮获取我的结果,搜索可以从日期或池或联合完成。
编辑:appService.js
'use strict';
var appServiceModule = angular.module(‘appServiceModule', []);
appServiceModule.factory(‘appService', ['$http', function ($http) {
var BASE_URL_ = "../api/";
var service = {};
service.newRacePromise = function () {
return $http.get(BASE_URL_ + 'races’);
};
return service;
}]);
【问题讨论】:
-
你必须实现一个分页机制,如果结果集有 600k 个项目,你不能发送和详细说明所有结果!
-
显示“appService”代码
-
在将 600k 结果拉入前端之前对它们进行数据库查询
-
改变你的休息服务,它必须接受一个范围(开始/结束)和查询参数。然后只获取用户可以在设备上看到的项目数,在用户滚动时增加范围并再次获取,查看 github 上的
infinite-scroll指令 -
@JonathonBlok 是的,但是哪个查询?是否存在从文本到多个值的搜索查询?示例:我输入“2009”,他找到了我 2009 年的所有比赛,如果我写“A2”,他会带我参加 A2 等所有比赛。
标签: javascript php mysql json angularjs