【问题标题】:Express.js res.render to render multiple datas sourcesExpress.js res.render 渲染多个数据源
【发布时间】:2014-05-07 17:11:47
【问题描述】:

我对 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 应用程序,还可以真正深入地了解应用程序开发?

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    有几种方法:

    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. 更常见的情况是,您可以使用 Promise 或异步库来改进复杂逻辑的代码组织。它可以让您拥有更好的可维护代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多