로그인 되어있는 id값이 화면에 안 나옵니다.

조회수 621회

node.js로 회원정보를 수정하는 페이지를 만들려고 하는데 회원정보 중 mysql에서 id값을 불러와서 화면에 표시하려는데 값이 세션값으로 표시돼요. 그리고 정보수정도 안됩니다ㅠㅠ 해결방법 부탁드립니다.

//app.js
app.get('/modify',(req,res)=>{
    console.log('회원정보수정 페이지');
    console.log(req.session);
    const id = req.body.id;
    if(req.session.is_logined == true){
        //req=circularJSON.stringify(req);
        console.log("req: " + req);

        client.query('SELECT * FROM member WHERE id=?', [id],(error, row)=> {
            if (error) {
                console.log('error:' + error);
            }
        res.render('modify',{
            is_logined : req.session.is_logined,
            name : req.session.name,
            id : req.session.id,
            row : row[0]

        });
        console.log(id);
    });
    }else{
        res.render('index',{
            is_logined : false
        });
    }
    });

    app.post('/modify',(req,res)=>{
        console.log('회원수정 하는중')
        const body = req.body;
        const id = body.id;
        const pw = body.pw;
        const name = body.name;
        const age = body.age;

        client.query('UPDATE member SET pw=?, name=?, age=? WHERE id=?', [
            pw, name, age, id
        ], (err, rows) => {
            if(err) {
                console.log(err);
                res.status(500).send('Internal Server Error');
            } else {
                console.log("rows: " + rows);
                res.redirect('/', {rows:rows[0]});

            }
        });
    });

//modify.ejs
<section>
        <div class="container">
            <form action="/modify" method="post" class="form-signin">
                <h2 class="form-signin-heading">회원정보수정</h2>
                <label>아이디</label>
                <div> <%= id %>
                </div>
                    <label>비밀번호</label>
                    <input type="password" name="pw" class="form-control" placeholder="Password" required>
                    <label>이름</label>
                    <input type="text" name="name" class="form-control" placeholder="name" required>
                    <label>나이</label>
                    <input type="number" name="age" class="form-control" placeholder="age" required>
                <p></p>
                    <button class="btn btn-lg btn-primary btn-block" type="submit" value="회원가입">수정완료</button>

            </form>
        </div>
    </section>

이미지

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • render() 할때 id : row[0]['id'] 여야 될거 같은데용 엽토군 2021.10.13 14:03
  • Cannot read property 'id' of undefined 오류가 뜨네요ㅠㅠ 알 수 없는 사용자 2021.10.13 15:24
  • 음.. 그거는 row[0]이 없는 모양이지요. 아무튼 핵심은 "사용자ID"를 보여주시려는 거라면 그건 mysql 조회 결과에서 찾아야 될 거라는 게 요점인데요 그 부분은 어떤가요? 엽토군 2021.10.13 15:38
  • console.log(id)를 했을 경우에 undefined 나오네요,, 알 수 없는 사용자 2021.10.13 16:14
  • res.render 직전에서 console.log(row) 하면요? 엽토군 2021.10.13 16:20
  • row는 아무것도 안떠요 알 수 없는 사용자 2021.10.13 16:35
  • 혹시 어디가 문제인지 알 수 있을까요??ㅠㅠㅠ 알 수 없는 사용자 2021.10.14 14:34
  • 일단 세션값이 뜨는 이유는 render() 할때 세션값을 쓰고 있기 때문인 건 확실한데요 그 이상은 아무것도 확실한 게 없어서 답변을 못드리겠네요.. 유감입니다. 엽토군 2021.10.14 18:01
  • 혹시 수정하는 부분은 뭐가 문제인지 알 수 있을까요? 알 수 없는 사용자 2021.10.14 18:42

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)