2014-11-18 2 views
1

Пожалуйста, помогите, я не включен в программирование . Я создал маршрут router.get('/statistics', routesCtrl.statistics) для страницы, где я хочу отображать некоторую статистику в некоторых диаграммах, используя Angular.Используйте угловые для вызова нескольких действий от Node.js

Я понял, что мне нужно отправить некоторые результаты запроса, например, сколько регистраций находится в db, сколько из них имеют «это свойство», сколько из них имеют «эти свойства» и т. Д., Будучи чем-то новым для меня. До сих пор в ответах маршрутов я отправил только одну статистику из приведенного списка.

Как отправить эту информацию в Angular, должен ли я создать литеральный объект, содержащий эти статистические данные, упаковать их в ответ и отправить его в Угловое? Или отправить весь json из db и разобрать его в Angular, но, похоже, это неправильная идея, потому что я не могу использовать запросы mongoose из Angular, если это правда :).

У меня нет другой идеи, и, вероятно, есть более профессиональные способы. Спасибо!

ответ

2

Это очень просто, когда вам нужны данные со стороны сервера, которые являются node.js в вашем случае или что-то такое, что это может быть как PHP, asp.nrt и т. Д. Вы должны отправлять HTTP-запросы на сервер с помощью углового $ http (GET/POST) и вместе с необходимыми параметрами в качестве объекта json или строки запроса. На конце сервера напишите какой-нибудь материал типа службы обслуживания, чтобы обработать это, и использовать пармеров send на сервере для запроса манго, а затем передать собранные данные как объект json обратно в угловой конец. При угловом вы можете проанализировать этот JSON, а угловые также имеют возможность использовать JSON/Array непосредственно в поле зрения с использованием атрибута ng-repeat и т. Д., Зависит от вашего точного требования.

Запрос в angular.js

var sendConfig = { 
     method : "POST", 
     url: "YOUR_URL", 
     data: {action : 'Test_Service'}, 
     headers : {} 
     }; 


     $http(sendConfig).success(function(response) { 
    console.log(response); 

     }).error(function(error) { 
     console.log(error); 
}); 

Response В node.js

var server = http.createServer(function(req,res){ 

    var webservice_actions_instance = new webservice_actions(req, res); 
    var service_response = {data : 'RESPONSE_HERE_AFTER_CERTAIN_ALGOS'}; 

    res.writeHead(200, {'Content-Type': 'text/html',"Access-Control-Allow-Origin": "*","Access-Control-Allow-Headers":" X-Requested-With"}); 
    res.write('Response Data '+ service_response); 
    res.end(); 



}).listen(8080); 
+0

Спасибо за ответ. Как включить всю мою информацию в ответ, который должен быть отправлен в Angular? Должен ли я использовать Async.js? – Webdesigner

+0

@Webdesigner Я добавил самую основную структуру использования restservice. Пожалуйста, дайте мне знать, если потребуется какая-либо помощь. –

+0

Благодарим вас за пример, я действительно оправдываю ваши усилия. Моя проблема в том, что мне нужно отобразить на клиенте некоторые данные. Например, отображение в месяц ОС, используемой пользователями для применения формы. Итак, это означает, что я должен допросить db, чтобы получить что-то вроде: {Январь: {Android: 30, iOS: 10, winPhone: 5}, февраль: {Android: 4, iOS: 40} и т. Д.}. Проблема заключалась в том, как создать несколько запросов и объединить результаты в один ответ. Я узнал, что могу использовать async.parallel, и теперь я пытаюсь выяснить, как я могу создать этот запрос с помощью мангуста, но, вероятно, мне это удастся :) – Webdesigner

Смежные вопросы