У меня странная проблема с 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.
Заранее спасибо,