Express.js res.render渲染多个数据源

时间:2014-05-07 06:52:21

标签: javascript node.js mongodb express mongoose

我使用Node.js和Express.js相对绿,并且想知道我是否可以就我的某些数据无法呈现的原因提出一些建议。我的代码如下:

var mongoose    = require('mongoose'),
ArticleModel    = mongoose.model('Article');

exports.index = function (req, res){
    ArticleModel.find({}, function (err, articles){
        if(err) throw new Error(err);
    });
    res.render('home/index', {
        title: 'Business, Inc',
        articles: articles
    });
};

如果我在ArticleModel.find中有res.render,它将返回要传递给我的模板的数据,但是因为我有多个数据源,所以如果可能的话,我希望我的res.render更加独立。我可以在整个应用程序中构建数据模型的最佳方式是什么。

Node.js和Express.js的在线学习资源是否超出了Hello World / Todo应用程序的教学范围,并展示了应用程序开发的真正深度?

1 个答案:

答案 0 :(得分:0)

有几种方法:

  1. 如果您需要所有路径中的某些数据,您可以移动数据检索(可能还有一些缓存策略)来表达中间件并将结果分配给req对象属性

    module.exports = function getArticles() {
     return function getArticlesRetrieval(req, res, next) {
    
      ArticleModel.find({}, function (err, articles){
       if(err) return next(err);
    
       req.articles = articles;
       next();
      });  
    
     };
    
    };
    
  2. 更常见的是,您可以使用promises或异步库来改进复杂逻辑的代码组织。它允许您拥有更好的可维护代码。