Как манипулировать данными, возвращаемыми из SQL, с помощью Angularjs

0

Я использую AngularJS для вызова SQL-запроса и возврата всей таблицы. Есть ли способ манипулировать данными на лицевой стороне, как только я извлечу данные, или лучше сделать манипуляции на странице обработки, прежде чем она вернется к Angular?

В приведенном ниже коде показан файл app.js, который я использую для извлечения данных, и я включил строку HTML, чтобы показать образец того, какой тип результата я пытаюсь достичь.

app.js

var dashboardApp = angular.module('dashboardApp', []);
dashboardApp.controller('dashboardController', function($scope, $http, $location, $anchorScroll) {

    $http.get('lib/dbp.php').success(function(data) {
      $scope.surveydata = data;
    }); 

});

Пример HTML

<ul>
    <li ng-repeat="item in surveydata['data']">{{item.location}}</li>
</ul>

{{surveydata['data'].location.length}}

Образец вывода

{ "data": [ 
  { 
    "surveyid": "51", 
    "customerName": "Steve Jones", 
    "companyName": "Acme", 
    "projectName": "Various Project", 
    "customerPhone": "", 
    "customerEmail": "", 
    "location": "Dallas", 
    "q1": "1", 
    "q1Comment": "None", 
    "q2": "1", 
    "q2Comment": "None", 
    "q3": "1", 
    "q3Comment": "None", 
    "q4": "2", 
    "q4Comment": "None", 
    "q5": "1", 
    "q5Comment": "None", 
    "q6": "Yes", 
    "q6Comment": "Always.", 
    "q7": "Yes", 
    "q7Comment": "Always.", 
    "q8": "Yes", 
    "q8Comment": "Certainly.", 
    "q9": "Yes", 
    "q9Comment": "None", 
    "q10Comment": "None", 
    "q11Comment": "Keep up the good work!", 
    "q12": "No", 
    "timestamp": "2015-07-17 11:08:24", 
    "ipaddress": "" 
  }

Раздел ng-repeat отлично работает для вывода основных данных, но с помощью location.length то, что я действительно хотел бы сделать, - это возможность подсчета количества мест в отдельности, т.е. В зоне 1 есть 5 опросов, или зона 2 имеет 8.

Я новичок в Angularjs, поэтому я пытаюсь выяснить, что лучше всего подходит для такого типа ситуации.

То, что я хотел бы видеть в качестве вывода, - это подсчет всех записей с расположением "Даллас" или в среднем по количеству баллов из всех записей из "Далласа". Есть много других вещей, которые я хотел бы сделать, но я понимаю, как делать простые манипуляции с данными, как упомянутые, поможет мне в других приложениях данных.

  • 0
    Поместите пример данных, полученных из запроса, и представление, на которое вы бы хотели выглядеть
  • 0
    В большинстве случаев предпочтительным вариантом является создание SQL-запроса, который возвращает данные таким образом, что он не требует манипуляций.
Показать ещё 3 комментария
Теги:
pdo

1 ответ

0
Лучший ответ

Использование SQL-запроса, чтобы всегда возвращать всю таблицу, обычно не является хорошей практикой. Это приемлемо, если вы гарантированно получите небольшую таблицу навсегда (сильное выражение). В противном случае лучше всего настроить таргетинг на ваши запросы на любые данные, которые будут представлены, и использовать второй запрос для высокоуровневой информации, такой как count.

Я не знаю, как выглядит ваш бэкэнд, но типичный подход будет примерно таким (псевдокод):

data = {}
SELECT surveyid, customerName, ... FROM "YourTable" WHERE (...) LIMIT 48 OFFSET 0;
response -> data.rows = response
SELECT count(*) FROM "YourTable" WHERE (...);
response -> data.count = response
return data

Затем на интерфейсе вы манипулируете { rows: [...], count: 123 }, который должен быть в формате, который вы хотите, учитывая ваши потребности выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню