본문 바로가기
컴퓨터 프로그래밍/Node.js

[Node.js] 상세페이지 만들기1 (URL parameter)

by 한33 2023. 11. 7.
const { MongoClient, ObjectId } = require('mongodb')

 

ObjectId 를 사용하기 위해 위의 코드로 수정해준다

 

app.get('/detail/:aaaa', async (요청, 응답) => {
 
  let result = await db.collection('post').findOne({ _id : new ObjectId('65438fd11b215d628373e1d9') })
  console.log(요청.params)
  응답.render('detail.ejs')
})

 

:aaaa 를 뒤에 붙여서 유저가 임의로 뒤에 갖다붙힐 수 있도록 했고, 주의할 점은 아무것도 갖다붙히지 않으면

/detail 로 이동할텐데 이는 명시하지 않아서 에러가 났었음

 

요청.params 는 유저한테 요청받은 값을 그대로 출력해볼 수 있다.

 

db.collection('post').findOne({ _id : new ObjectId('65438fd11b215d628373e1d9') }

 

위 같은 함수를 통해 지난 번 DB 내의 모든 값을 불러왔던 거와 다르게 해당 데이터 값 하나만 불러올 수 있었다.

 

 

유저가 /detail/ 뒤에 글_id 를 입력해서 GET요청을 날리면

detail.ejs 페이지를 보여주는데 글제목과 내용이 페이지에 박혀있어야한다

 

는 과제를 받았다.

 

server.js

app.get('/detail/:aaaa', async (요청, 응답) => {

  let id = 요청.params.aaaa
  let result = await db.collection('post').findOne({ _id : new ObjectId(id) })
  console.log(result)
  응답.render('detail.ejs', { : result})
})

 

detail.ejs

    <div class="detail-bg">
        <h4><%= 글.title%></h4>
        <p><%= 글.content%></p>
    </div>

 

위와 같이 코드를 짰다. 성공적이었다.