2015-11-09 29 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的异步性质,我不确定如果像数组那样循环就像阻塞代码一样,如果我有太多的数据要通过槽。 这就是为什么我不完全确定我写的代码的原因,但是,因为我没有太多的关于nodejs的经验,并且表达了我无法用其他任何方式来处理这个问题。 感谢您的评论。 –

回答

0

是,.forEach阻塞(同步),但它是极快。一般来说,您不需要担心这样的基本数据操作。记住 - 异步不会让事情花费更少的时间,它只是让其他事情能够在同一时间继续发生。

如果你真的想让你的循环异步,看看async模块。 async.each是异步版本.forEach

+0

我会看看异步非常感谢你! –