Я использую Express для маршрутизации и MongoDB для моего простого блогового приложения Node (я новичок и только учусь), и мне нужно перенаправить на домашнюю страницу, если кто-то вводит неправильный URL, всякий раз, когда он пытается перенаправить сбой программы.
Вывод на терминал:
Server started on 3000
Rendered homepage
events.js:174
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'postTitle' of null at line 115
Параметры маршрутизатора / Get
//=== DYNAMIC POSTS ROUTE ===//
app.get("/posts/:postId", function(req, res){
const requestedPostTitle = req.params.postId;
Post.findOne({postTitle: requestedPostTitle}, function(err, foundPost){
if (!err) {
//FAILS HERE IF INCORRECT URL IS ENTERED INTO BROWSER
const title = foundPost.postTitle;
const date = foundPost.postDate;
const content = foundPost.postBody;
/*res.send(foundPost.postDate);*/
res.render(`post`, {
title: title,
date: date,
content: content
});
} /*else {
res.redirect(`/`);
console.log(`404 ${requestedPostTitle} does not exist`);
} */
});
});
Программа завершится сбоем только в том случае, еслиЯ ввожу неверный URL, после этого ни одна из моих страниц не будет перезагружена (я полагаю, из-за обратного вызова (err)), я должен перезапустить свой сервер вручную, и все работает снова, nodemon не сбрасывает его, когда онне удается.
корневой вид:
<h1>HOME</h1>
<p><%= pageStartContent %></p>
<% posts.forEach(function(post){ %>
<div class="post-box">
<h3><%= post.postTitle %></h3>
<p class="date"><%= post.postDate %></p>
<p class="post-body"><%= post.postBody.substring(0,450) + "..." %></p>
<a href="posts/<%= post.postTitle %>">Read More</a>
</div>
<% }) %>