为什么我的数据路由仅部分工作



app.js将allasticles初始化为全局变量,其中来自JSON文件的文章。

app.locals.allArticles = dataFile.articles;

articles.js(路由)获取应用程序数据并在文章中可用。ejs页面

router.get('/articles', function(req, res) {
  var data = req.app.get('appData');
  var articleTitles = data.articles;
  res.render('articles', {
    pageTitle: 'Articles',
    pageID: 'articles',
    articles: articleTitles
  });
});

header.ejs参考allartsices如下

<% allArticles.forEach(function(item) { %>
  <%= item.name %>
<% }); %>

问题:引用pageID或文章引发参考错误,即

allArticles is not defined

奇怪的是,对Pagetitle的引用通过..

您将一个名为 articles的视图变量传递给您的视图,而不是 allArticles。重命名一个或另一个,以使其匹配并将错误消失。

您将articles作为对象而不是数组,我认为是articleTitles的文章数组,因此您可以将EJS代码更改为:

<% articles.articles.forEach(function(item) { %>
  <%= item.name %>
<% }); %>

成功地将数据从JSON文件传递到视图中:

app.js使文章数组可用于本地路线:

app.locals.allArticles = dataFile.articles;

index.js(oute)获取应用程序数据,创建的数组以保存数据,使用foreach函数传递的数据,并在视图中渲染:

router.get('/', function(req, res) {
  var data = req.app.get('appData');
  var allArticles = [];
  data.articles.forEach(function(item) {
    allArticles = item.title;
  });
  res.render('index', {
    pageTitle: 'Home',
    pageID: 'home',
    articles: allArticles
  });
});

index.ejs(view):

<% allArticles.forEach(function(item) { %>
  <%= item.name %><br/>
<% }); %>

最新更新