<최종코드>
// 데이터 수정
const editComment = document.querySelectorAll('.edit')
editComment.forEach((ele) => {
ele.addEventListener('click', async(e) => {
let id = e.target.closest('tr').dataset.documentid;
var editRef = database.collection("comment").doc(id);
let insertPassword = prompt('비밀번호를 입력하세요!');
try{
let data = await editRef.get()
password = data.data().password
// 비밀번호가 맞게 입력되면 바로 수정 가능하게 함.
if(password == insertPassword) {
let editComment = prompt("수정할 댓글을 입력하세요")
console.log(editComment);
if (editComment == null || editComment == '') {
alert('값이 입력되지 않았습니다.')
return
}
var washingtonRef = database.collection('comment').doc(id)
// Set the "capital" field of the city 'DC'
return editRef
.update({
comment: editComment,
createAt:createAt()
})
.then(() => {
console.log('수정완료!')
window.location.reload()
})
.catch((error) => {
// The document probably doesn't exist.
console.error('에러: ', error)
})
}
// 비밀번호가 틀리거나 입력되지 않으면 값이 맞을때까지 prompt 창 팝업되게 함
if(insertPassword == null || insertPassword !== password) {
while(insertPassword !== null && insertPassword !== password) {
insertPassword = prompt('비밀번호를 제대로 입력하세요!')
if(insertPassword == password) {
if(password == insertPassword) {
let editComment = prompt("수정할 댓글을 입력하세요")
var washingtonRef = database.collection('comment').doc(id)
// Set the "capital" field of the city 'DC'
return editRef
.update({
comment: editComment,
createAt:createAt()
})
.then(() => {
console.log('수정완료!')
window.location.reload()
})
.catch((error) => {
// The document probably doesn't exist.
console.error('에러: ', error)
})
}
}
}
}
} catch(error) {
console.log(error);
}
})
})
처음 코드를 짤때는 if 로 비밀번호가 틀리게 입력되면 비밀번호 틀림 창이 뜨고, else if로 비밀번호가 입력되지 않으면 입력되지 않음창이 나오게, 그리고 if문을 하나 더 만들어 맞는 값을 입력한 경우 수정이 가능하게 코드를 짰다.
-> 코드가 제대로 작동하지 않음. (이유중 한가지는 조건문이 잘못 입력된 것)
비밀번호가 제대로 입력되지 않은 경우 제대로 입력할때까지 계속 prompt 창이 뜨도록 하고싶어 제대로 입력되지 않은 경우 prompt가 나오도록 했는데 한번만 더 나오고는 끝남.
while문을 이용해 값이 제대로 입력될때까지 비밀번호가 잘못 입력됬다는 팝업창을 띄우는데 성공했으나
한번에 맞는 비밀번호를 바로 입력하면 아무 동작도 일어나지 않고 prompt창만 꺼짐. 한번 잘못 입력한 다음에 맞게 입력해야 제대로 코드가 동작함.
그래서 비밀번호가 맞게 입력된 경우의 조건문을 상단에 하나 더 만들고 수정이 처리되도록 했다. -> 성공
코드의 중복이 일어나 내키지는 않았지만 현재로서는 이 방법이 최선이었다.
공부를 더 해서 중복을 최대한 줄이고 간결한 코드를 만들 수 있게 시도해봐야겠다.