2015-11-09 4 views
0

Я новичок с помощью nodejs и выражаю и задавался вопросом, что лучше всего использовать для обработки данных перед визуализацией вида. В настоящее время я хочу установить некоторые переменные на основе извлеченных данных для визуализации представления. Пока это то, что у меня есть, но я не уверен, что это лучшая практика или если есть лучший способ сделать это.Экспресс js манипулирует данными перед визуализацией

var request = require('request'); 

module.exports = function(req, res, next) { 
    request.get('http://nout.nout-app.com/getAccessVIPForUserId/' + req.params.id, function(err, resp, body) { 
    var bodyResp = JSON.parse(body); 

    bodyResp.data.forEach(function(el, index, array){ 
     if(el.access_status === '1') { 
     el.status = 'success'; 
     } else { 
     el.status = 'warning'; 
     } 

     if(el.access_friend === '1') { 
     el.access_friend = 'yes'; 
     } else { 
     el.access_friend = 'no'; 
     } 
    }); 

    console.log(bodyResp.data); 
     if(err || (typeof bodyResp.data === 'undefined' || bodyResp.data === null)) { 
     res.render('error', { 
      message: bodyResp.reason ? bodyResp.reason : 'Something went wrong', 
      error: { 
      status: 500 
      } 
     }); 
     } else { 
     res.render('profile', { 
      intern: true, 
      user: req.user, 
      invitations: bodyResp.data 
     }); 
     } 
    }); 
}; 

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

+1

Не зная слишком много о ваших ограничениях и целях проекта, это выглядит как прекрасный код. Как вы думаете, что может измениться? – Harangue

+0

Поскольку асинхронный характер nodejs, я не уверен, что если цикл, подобный этому, через массив будет похож на блокирующий код, если у меня слишком много данных для loo trough. Вот почему я не совсем уверен в коде, который я написал, но, поскольку у меня не слишком много опыта с nodejs и выражением, я не могу думать иначе. Спасибо за ваш комментарий. –

ответ

0

Да, .forEach блокируется (синхронно), но это очень быстро. В общем, вам не нужно беспокоиться об основных манипуляциях с данными. Помните - асинк не делает что-то меньше времени, он просто дает другим возможность продолжать делать что-то среднее.

Если вы действительно хотите сделать свой асинхронный цикл, посмотрите на модуль async. async.each - это асинхронная версия .forEach

+0

Я посмотрю на асинхронное большое спасибо! –

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