Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 정적 페이지
- serializeUser
- sendFile
- e.target
- Passport
- GitHub Actions
- react#로스트아크#mbti#테스트
- Promise #async #await #try #catch
- expess
- updateone
- git#github#init#add#commit#restore#log#staging area#repository#git사용법
- github#githubpages#빈화면#basename
- __dirname
- ejs 문법
- typescript #unknown
- mongodb 입출력
- git vscode
- deserializeUser
- typescript #class #extends #public #private #protected #static
- typescript #import #export #*
- typescript #class #constructor #public #private #static #extends #protected #typeof #in #instanceof #never
- CSS
- typescript #constructor #class #public #private
- connect-mongo
- insertone
- github#로컬저장소#원격저장소
- github#githubpages#gh-pages#deploy
- updatemany
- typescript #react #jsx #component #usestate
- TypeScript #문법
Archives
- Today
- Total
VaIice의 이야기
[Node.js] 상세 페이지 만들기 본문
1. URL 파라미터 만들기
// server.js
// :id에 1, 2, 3, ... 등 아무 ID 입력
app.get('/detail/:id', async (request, response) => {
})
2. find, findOne
// server.js
// :id에 1, 2, 3, ... 등 아무 ID 입력
app.get('/detail/:id', async (request, response) => {
let result = await db.collection('main').findOne({ _id: new ObjectId('6693af7f35c1e6dfdc3c05b2')})
response.render('detail.ejs', {posts: result})
})
findOne: 일치하는 데이터 1개 탐색
find: 일치하는 모든 데이터 탐색
3. ObjectId
const { MongoClient, ObjectId } = require('mongodb')
코드 추가해야 사용 가능
let result = await db.collection('main').findOne({ _id: new ObjectId('6693af7f35c1e6dfdc3c05b2')})
ObjectId 앞에 new 추가
4. URL params
app.get('/detail/:id', async (request, response) => {
let result = await db.collection('main').findOne({ _id: new ObjectId('6693af7f35c1e6dfdc3c05b2')})
response.render('detail.ejs', { post: result })
})
request.params
4. ID 찾기
// server.js
app.get('/detail/:id', async (request, response) => {
// id가 1이면, 0번째 자료 return
let result = await db.collection('main').find().skip(request.params.id - 1).limit(1).toArray();
response.render('detail.ejs', {post: result[0]})
})
// detail.ejs
<div class="detail-bg">
<h4><%= JSON.stringify(post.title)%></h4>
<p><%= JSON.stringify(post.content)%></p>
</div>
request.params
HTML에서의 JS 배열, 객체 사용 -> JSON.stringify()
5. 링크 만들기
// main.ejs
<% for(let i = 0; i < posts.length; i++) {%>
<a href="/detail/<%-i%>">
<div class="form-box">
<%= JSON.stringify(posts[i].title)%>
</div>
</a>
<% } %>
// server.js
app.get('/detail/:id', async (request, response) => {
let id = parseInt(request.params.id)
let result = await db.collection('main').find().skip(id).limit(1).toArray();
response.render('detail.ejs', { post: result[0] })
})
/detail/<%-i%>에서 i는 string
parseInt로 정수 변환 후 배열 함수 삽입
요약
URL 파라미터 request.params
게시물 한 개 찾기 findOne()
게시물 여러 개 찾기 find()
'[Node.js]' 카테고리의 다른 글
[Node.js] 페이지 기능 만들기 (0) | 2024.07.16 |
---|---|
[Node.js] 서버로 데이터 보내기, 게시글 삭제 만들기 (2) | 2024.07.16 |
[Node.js] 게시글 수정 만들기 (0) | 2024.07.15 |
[Node.js] 글쓰기 만들기 (0) | 2024.07.11 |
[Node.js] API method, URL (0) | 2024.07.10 |