Express js在渲染视图之前操纵数据

时间:2015-11-09 18:59:07

标签: javascript node.js express

我是使用nodejs和express的新手 并且想知道在渲染视图之前操作数据的最佳做法是什么。目前我想根据检索到的数据设置一些变量来渲染视图。到目前为止,这就是我所拥有的,但我不确定这是最佳做法还是有更好的方法。

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 个答案:

答案 0 :(得分:0)

是的,.forEach正在阻止(同步),但非常快。通常,您不需要担心像这样的基本数据操作。记住 - 异步不会让事情花费更少的时间,它只会让其他东西能够在同一时间内继续发生。

如果您真的想让循环异步,请查看async模块。 async.each.forEach

的异步版本