본문 바로가기

Nodejs

[NODEJS 입문]12.(사용자 UPDATE) 사용자 정보 변경

반응형

사용자 정보를 변경한다.

register pug 를 토대로 update pug를 생성

 

1. update

/user/update

 

router.route('/user/update')
.get((req,res)=>{
res.render(path.join('.','user','update'),{user : req.session.user});
})

 

2. update.pug

-if(user){
form(action="/user/update", method="post")
input(type="hidden", name="_method" value="PUT")
div
input(type='text' name='username' placeholder='username' value=user.username)
div
input(type='password' name='password' placeholder='●●●●●●●●●')
div
input(type='text' name='displayname' placeholder='displayname' value=user.displayname)
div
input(type='submit' value='Update')
-}else{
script(type='text/javascript').
alert('세션이 종료 되었습니다.');
location.href='/user/welcome';
-}

 

3. ** put 방식으로 데이터 전달!!

npm install --save method-override

var methodOverride = require('method-override');
 

 

** methodOverride 재정의 해준다!!!

app.use(methodOverride((req, res)=> {
if (req.body && typeof req.body === 'object' && req.body._method) {
// look in urlencoded POST bodies and delete it
var method = req.body._method
console.log('method :: ',method);
delete req.body._method
return method
}
}))
 

 

* 중요

1. app.use(bodyParser.urlencoded({ extended: false }));
 
2. app.use(methodOverride((req, res)=> {...});
3. app.use(userRouter);
* 순서가 중요합니다!!!!
 

 

router.route('/user/update')
.put((req,res)=>{
var temp ={
username : req.body.username,
password : req.body.password,
displayname : req.body.displayname
}
for(var i=0;i<userList.length;i++){
var user = userList[i];
if(user.username===temp.username){
if(temp.password){
user.password = temp.password;
}
if(temp.displayname){
user.displayname = temp.displayname;
}
req.session.displayname = temp.displayname;
req.session.user = user;
return req.session.save(()=>{
res.redirect('/user/welcome');
})
}
}
res.redirect('/user/welcome')
})

 

1. 입력받은 user정보 생성

 

2. username이 같은 친구 찾기

 

2-1. username이 같은 친구중에 passwd가 바뀌면 바꿈

2-2. username이 같은 친구중에 dispname이 바뀌면 바꿈

 

3. 세션저장 후 redirect!

 

반응형