5 글 보임 - 1 에서 5 까지 (총 5 중에서)
-
글쓴이글
-
2023년 3월 10일 00:33 #71700
이순민참가자회원 정보 수정할려고 합니다. 회원정보는 비밀번호를 입력해야 정상적으로 진행됩니다. 회원수정페이지에서 입력된 데이터를 아래 변수 이름 ~닉네임으로 받아왔습니다. 여기엔 변경되지 않은 데이터와 변경한 데이터 섞여 있을 수 있습니다. 그래서 변경되지않은 데이터는 skip하고 변경된 데이터 중 아이디, 닉네임, 이메일을 중복체크 하고 싶습니다. 어떻게 코드를 짜야할지 모르겠습니다. (아래 코드는 회원수정페이지에서 입력된 데이터를 그대로 user 컬렉션에 검색했기때문에 기존 회원의 자료를 skip 못하니 중복체크에 걸립니다.) //회원정보 수정 app.put('/userEdit', 로그인했냐, function (요청, 응답) { var 이름 = 요청.body.이름; var 아이디 = 요청.body.아이디; var 비밀번호 = 요청.body.비밀번호; var 새비밀번호 = 요청.body.새비밀번호; var 닉네임 = 요청.body.닉네임; var 이메일 = 요청.body.이메일; var 수정정보 = { userName: 이름, userId: 아이디, userPw: createHashedPassword(새비밀번호), userNick: 닉네임, userEmail: 이메일 } // 기존의 아이디면 넘어가고 아니라면 아이디중복체크(닉네임, 이메일 동일) 해야함.(미구현) db.collection('user').findOne({ userId: 요청.user.userId }, function (에러, 결과) { if (createHashedPassword(비밀번호) == 결과.userPw) { db.collection('user').findOne({ userId: 아이디 }, function (에러, 아이디결과) { db.collection('user').findOne({ userNick: 닉네임 }, function (에러, 닉네임결과) { db.collection('user').findOne({ userEmail: 이메일 }, function (에러, 이메일결과) { db.collection('user').updateOne({ userId: 요청.user.userId }, { $set: 수정정보 }, function (에러, 결과) { if (아이디결과 == null && 닉네임결과 == null && 이메일결과 == null) { 응답.send("성공") } else if (아이디결과 != null) { 응답.send("중복ID") } else if (닉네임결과 != null) { 응답.send("중복Nick") } else if (이메일결과 != null) { 응답.send("중복Email") } }) }) }) }) } else { 응답.send('비밀번호틀림') } })
2023년 3월 10일 09:36 #71722
codingapple키 마스터db.collection('user').updateOne({ userId: 요청.user.userId } 는 if (아이디결과 == null && 닉네임결과 == null && 이메일결과 == null) { 안에 담으면 될듯요 보통 아이디랑 이메일 중 하나는 변경불가능하게 해놓습니다
2023년 3월 10일 16:51 #71770
이순민참가자ChatGPT한테 findOne() 메소드에서 특정 도큐먼트를 제외하는 명령어 있냐 물어보니 $ne 옵션을 이용하면 가능하대서 $ne 관련 정보좀 찾아보고 적용해봤더니 원하는 결과가 나왔습니다. 혹시 $ne 를 사용하는게 괜찮을까요? db.collection('user').findOne({ userNick: 닉네임, userId: {$ne: 요청.user.userId } }, function (에러, 닉네임결과) { 이 코드는 userNick이 닉네임인걸 찾되 userId가 현재로그인된사람 Id면 skip해라라고 생각하면서 명령한건데 정확한건지도 궁금합니다.
//회원정보 수정 app.put('/userEdit', 로그인했냐, function (요청, 응답) { console.log(1) var 이름 = 요청.body.이름; var 비밀번호 = 요청.body.비밀번호; var 새비밀번호 = 요청.body.새비밀번호; var 닉네임 = 요청.body.닉네임; var 이메일 = 요청.body.이메일; var 수정정보 = { userName: 이름, userPw: createHashedPassword(새비밀번호), userNick: 닉네임, userEmail: 이메일 } // 기존의 아이디면 넘어가고 아니라면 아이디중복체크(닉네임, 이메일 동일) db.collection('user').findOne({ userId: 요청.user.userId }, function (에러, 결과) { if (createHashedPassword(비밀번호) == 결과.userPw) { db.collection('user').findOne({ userNick: 닉네임, userId: {$ne: 요청.user.userId } }, function (에러, 닉네임결과) { db.collection('user').findOne({ userEmail: 이메일, userId: {$ne: 요청.user.userId } }, function (에러, 이메일결과) { console.log("닉넴결과 = "+닉네임결과," 이메일결과 = "+이메일결과) if (닉네임결과 == null && 이메일결과 == null) { db.collection('user').updateOne({ userId: 요청.user.userId }, { $set: 수정정보 }, function (에러, 결과) { 응답.send("성공") }) } else if (닉네임결과 != null) { 응답.send("중복Nick") } else if (이메일결과 != null) { 응답.send("중복Email") } }) }) } else { 응답.send('비밀번호틀림') } })
-
글쓴이글
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
- 답변은 로그인 후 가능합니다.