<div class="description">
	<p><%- blog.body.substring(0, 100) %>...</p> <!-- This only shows 100 character of the body-->
</div>

#SHOW time 
* Add Show route 
* Add show template 
* Add links to show page 
* Style show template

1. Add /blogs/:id route to the app.js

app.get("/blogs/:id", (req, res) => {
	// 1) connection test
		// res.send("SHOW PAGE!");
	// 2) get Id of a particular item and respose, render "show" page for showing detail info of the item
	Blog.findById(req.params.id, (err, foundBlog) =>{
		if(err){
			console.log(err)
			res.redirect("/blogs");
		} else {
			res.render("show", {blog: foundBlog}) // send the particular item's info(name, body, id etc) to show page as name of the blog
		}
	  })	// take 2 arguments(id, callBack)
})

2. Add "More info" button on the index.ejs

: checkout lesson 322

3. Add getting Id info function to the app.get("blogs/:id")

: checkout 1

4. Create show page for showing more info for particular data and design

<%- include("./partials/header")%>

<div class="ui main text container segment">
    <div class="ui huge header"><%= blog.title %></div>
		<div class="ui top attached">
			<div class="item">
				<img class="ui centered rounded image" src="<%= blog.image %>">
				<div class="content">
					<span><%= blog.created.toDateString() %></span>
				</div>
				<div class="description">
					<p><%- blog.body %></p>
				</div>
				<a class="ui orange basic button" href="/blogs/<%= blog._id%>/edit">EDITE</a> <!-- <a> tag and <form> tag aren't inline block-->
				<form id="delete" action="/blogs/<%= blog._id %>?_method=DELETE" method="POST">
					<button class="ui red basic button">DELETE</button>
				</form>
		</div>
			
	</div>
		
</div>

<%- include("./partials/footer")%>

 

5. change index for showing only small preview as other websites do

<%= blog.body.substring(0, 100) %>...
<!-- DB에 저장된 blog.body의 일부(0~100번째 글자) 만 출력한다. 
미리보기 개념으로 사용하여 사용자에게 일부 내용을 보여준다.-->

6. <html> 태그가 blog.body(text content)에 사용될 수 있도록 하여 모든 글이 하나의 문단으로 출력되는 것을 방지

1) tag change this code

<p><%- blog.body.substring(0, 100) %>...</p> <!-- This only shows 100 character of the body-->

2) Issue of the allow to use <%- %>

<script>alert("I HACKED YOU")</script>
<!--
<html>태그를 사용할 수 있도록 하여 텍스트의 가독성을 높였지만, 반대로 <script>태그가
이용가능해짐에 따라 보안에 문제가 생긴다. 이는 expressSanitizer를 이용하여 방지한다(322강 참조)
-->​

 

 

+ Recent posts