728x90
1. 작성자 목록 가져오기
...(생략)...
} else if(pathname === '/create') { //create일 때 실행
db.query(`SELECT * FROM topic`, function(error, topics) {
db.query('SELECT * FROM author', function(error2, authors) { //작성자 select 질의문 추가
console.log('authors : ', authors);
...(생략)...
2. 셀렉트박스 만들기
- tag라는 빈 문자열 변수와 i라는 0따리 정수 인덱스 변수 만들어서 select 태그의 자식태그인 option 태그를 문자열로 묶어버려서 넣기
var tag = '';
var i = 0;
while(i < authors.length) {
tag += `<option value="${authors[i].id}">${authors[i].name}</option>`;
i++;
}
...(생략)...
`<form action="create_process" method="POST">
...(생략)...
<p>
<select name="author">${tag}</select>
</p>
생겻죠
3. template로 분리해주기
- 속성 선언하기
},authorSelect:function(authors) {
var tag = '';
var i = 0;
while(i < authors.length) {
tag += `<option value="${authors[i].id}">${authors[i].name}</option>`;
i++;
}
return `
<p>
<select name="author">${tag}</select>
</p>
`;
}
- 2번에서 <p></p>태그와 함께 만들었던 select 태그를 모두 지우고 그 자리에 authorSlect를 추가한다
${template.authorSelect(authors)}
4. 선택한 작성자로 글 생성시키기
- 현재는 author_id가 '3'으로 고정되어 있음 => post.author로만 바꿔주면 됨!!
...(생략)...
var post = qs.parse(body);
db.query(`
INSERT INTO topic
(
title
,description
,created
,author_id
)
VALUES(
?
,?
,NOW()
,?
)`,
[post.title, post.description, post.author],
...(생략)...
5. 글 생성후 리다이렉션되는 글 상세조회 오류 수정
- 글 상세조회 질의문에 작성자도 가져올 수 있게 작성자 테이블을 조인시켜준다
- 화면에 작성자의 id값이 아닌 이름이 나올 수 있게 변수명인 topic으로 받아 name으로 접근해 준다
...(생략)...
db.query(`SELECT * FROM topic AS t LEFT JOIN author AS a ON t.author_id = a.id WHERE t.id = ?`
, [queryData.id], function(error2, topic) {
if(error2){
throw error2;
}
var title = topic[0].title;
var description = topic[0].description;
var list = template.list(topics);
var html = template.HTML(title, list,
`<h2>${title}</h2>
${description}
<p>by ${topic[0].name}</p>`,
...(생략)...
아오 여기 author 테이블 컬러명이랑 where절 컬럼앞에 테이블 안붙여서 계속 오류나고... 야마가 싸악
하지만 해냇죠
6. 작성자 수정하기
- 수정 화면에서 작성화면에서 template에서 만들어뒀던 셀렉트박스 가져와야하고
- 그 셀렉트박스에 현재 작성자 저장해야 하고
- 사용자가 수정하려는 작성자 받아야함
- //고정해뒀던 author_id=3을 파라미터 ?로 수정하고, 사용자한테 받은 작성자값 넣어주기
} else if(pathname === '/update') { //update일 때 실행
...(생략)...
db.query(`SELECT * FROM topic WHERE id = ?`, [queryData.id], function(error2, topic) {
if(error2){
throw error2;
}
db.query(`SELECT * FROM author`, function(error2, authors) { //작성자 질의문 추가
...(생략)...
var html = template.HTML(t.title, list,
`<form action="/update_process" method="POST">
..(생략)...
<p>
<!-- 작성자 리스트, 현재 작성자-->
${template.authorSelect(authors, topic[0].author_id)}
</p>
...(생략)...`
} else if(pathname === '/update_process') { //update_process일 때 실행
...(생략)...
db.query('UPDATE topic SET title=?, description=?, author_id=? WHERE id=?',
[post.title, post.description, post.author, post.id], function(error, result) {
'{ "Hello World!" }; > Node.js' 카테고리의 다른 글
(Node.js) 코드정리 - DB연결, CRUD 분리하기(모듈화) (0) | 2024.02.21 |
---|---|
( Node.js) mysql 모듈 이용하여 글 목록 조회, 상세조회, 생성, 수정, 삭제 기능(CRUD) 구현 (0) | 2023.12.15 |
(Node.js) 입출력 정보 보안 (0) | 2023.12.12 |
(Node.js) 템플릿 기능 정리(객체지향), 모듈활용 (0) | 2023.12.12 |
(Node.js) 글 수정, 삭제 하기 (0) | 2023.12.11 |