목차
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 |