E JS Ссылка Ошибка при попытке передачи пар ключ-значение с помощью Node.js - PullRequest
0 голосов
/ 29 апреля 2020

У меня странная проблема с E JS, когда я использую res.render, чтобы попытаться передать объект javascript (ключ: значение).

Например, это прекрасно работает ( отлично работает два отдельных запроса app.get):

///////////root route
app.get("/", function (req, res) {
  Featuredblog.find({}, function (err, blogs) {
    if (err) {
      console.log(err);
    } else {
      res.render("home", { blogs: blogs });
    }
  });
});

////////GET FEATURED VIDEO PAGE SECTION
app.get("/featuredvideo", function (req, res) {
  Featuredpost.find({}, function (err, videos) {
    if (err) {
      console.log(err);
    } else {
      res.render("featuredvideo", { videos: videos });
    }
  });
});

Но я не хочу, чтобы Избранные видеоролики размещались на отдельной странице. Я хочу, чтобы они были на главной странице вместе с заметками в блоге.

Но когда я go объединяю их в запрос app.get ("/"), выдается E JS Ссылочная ошибка, говорящая, что "videos" не определено в eval (eval при компиляции .. .

Вот как это выглядит, когда я их объединяю:

app.get("/", function (req, res) {
  Featuredblog.find({}, function (err, blogs) {
    if (err) {
      console.log(err);
    } else {
      res.render("home", { blogs: blogs });
    }
  });

  Featuredpost.find({}, function (err, videos) {
    if (err) {
      console.log(err);
    } else {
      res.render("home", { videos: videos });
    }
  });
});

У него нет проблем с передачей значения ключа "blogs", только проблема с ключом "videos" доставляет мне проблемы. Кроме того, когда я выполняю console.log («Success») после оператора else, он записывает «Success», поэтому функция работает.

И мой home.e js, и featuredvideos.e js файлы находятся в моей папке "views".

Вот как выглядит мой файл home.e js:

<!-- featured blog section -->
<div class="container-fluid">
<h1 class="video-title">Featured Blogs</h1>

    <% blogs.forEach(function(blog) { %>

  <div class="video-container">
    <div class="video">
      <div class="blog-image">
        <img src="/images/<%= blog.image %>">
      </div>
    </div>
    <div class="video video-text">
      <h1> <%= blog.title %> </h1>
      <p>
        <%= blog.content.substring(0, 700) %> ... <mark>Read More.</mark>
      </p>
    </div>
  </div>
  <%  }); %>
</div>


<!-- featured Videos section -->
<div class="container-fluid">
<h1 class="video-title">Featured Videos</h1>

    <% videos.forEach(function(video) { %>

  <div class="video-container">
    <div class="video">
      <div class="embed-responsive embed-responsive-16by9">
      <iframe class="embed-responsive-item" src="<%= video.video %>" allowfullscreen></iframe>
      </div>
    </div>
    <div class="video video-text">
      <h1> <%= video.title %> </h1>
      <p>
        <%= video.content.substring(0, 700) %>  ... <mark>Read More.</mark>
      </p>
    </div>
  </div>
  <%  }); %>
</div> 

И вот эта ошибка, которую я получаю:

ReferenceError: /Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/views/home.ejs:47
    45| 
    46| 
 >> 47|     <% videos.forEach(function(video) { %>
    48| 
    49|   <div class="video-container">
    50|     <div class="video">

videos is not defined
    at eval (eval at compile (/Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/node_modules/ejs/lib/ejs.js:649:12), <anonymous>:26:8)
    at home (/Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/node_modules/ejs/lib/ejs.js:679:17)
    at tryHandleCache (/Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/node_modules/ejs/lib/ejs.js:272:36)
    at View.exports.renderFile [as engine] (/Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/node_modules/ejs/lib/ejs.js:478:10)
    at View.render (/Users/Louieg3/Documents/WEB DEVELOPMENT/mindunravelledexpress/node_modules/express/lib/view.js:135:8)
    at tryRender (/Users/Louieg3/Documents/WEB ... etc.

Есть какие-нибудь мысли? Я не уверен, почему это сработало бы, если бы он был разбит на отдельный запрос app.get, будучи частью запроса получения маршрута root. наличие двух отдельных функций, вызывающих проблему с E JS и Node.

Заранее спасибо,

...