선행지식
레코드 데이터 수정 (Update)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>키워드 검색후 데이타 수정</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-storage.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script src="/firebaseConfig.js"></script>
</head>
<body>
<div class="container">
<form id="editForm" class="m-3">
<input type="text" id="title" name="title" class="form-control mb-3" placeholder="상품명">
<input type="text" id="price" name="price" class="form-control mb-3" placeholder="가격">
<textarea id="content" name="content" rows="4" class="form-control mb-3" placeholder="상품설명"></textarea>
<textarea id="remark" name="remark" rows="4" class="form-control mb-3" placeholder="참고노트"></textarea>
<img id="pimageDisplay" style="width: 180px; height: 180px;">
<input type="file" id="pimage" name="pimage" class="form-control mb-3">
<input type="submit" value="수정 확인" class="btn btn-primary" style="background-color: orange;">
</form>
</div>
<script>
var db = firebase.firestore();
var storage = firebase.storage();
var id; // id 변수를 전역 범위에서 선언합니다.
$(document).ready(function() {
var params = new URLSearchParams(window.location.search);
id = params.get('id');
db.collection('products').doc(id)
.get()
.then((doc) => {
if (doc.exists) {
var data = doc.data();
$('#editForm #title').val(data.상품명);
$('#editForm #price').val(data.가격);
$('#editForm #content').val(data.상품설명);
$('#editForm #remark').val(data.참고노트);
$('#editForm #pimageDisplay').attr('src', data.사진);
} else {
console.log("No such document!");
}
}).catch((error) => {
console.log("Error getting document:", error);
});
});
$('#editForm').submit(function(e) {
e.preventDefault();
var timestamp = new Date().getTime();
var title = $('#title').val();
var price = $('#price').val();
var content = $('#content').val();
var remark = $('#remark').val();
var file = $('#pimage').get(0).files[0];
var fileName = 'image_' + timestamp + '.jpg'
if (file) {
var storageRef = storage.ref();
var fileRef = storageRef.child('products/' + fileName);
fileRef.put(file).then((snapshot) => {
snapshot.ref.getDownloadURL().then((url) => {
var oldImageName = $('#editForm #pimageDisplay').attr('src');
var oldImageRef = storage.ref('products/' + oldImageName);
oldImageRef.delete().then(() => {
console.log("Old image successfully deleted!");
}).catch((error) => {
console.error("Error deleting old image: ", error);
});
updateProduct(title, price, content, remark, url);
});
});
} else {
updateProduct(title, price, content, remark);
}
})
function updateProduct(title, price, content, remark, imageUrl) {
var product = {
상품명: title,
가격: price,
상품설명: content,
참고노트: remark,
날짜: new Date()
};
if (imageUrl) {
product.사진 = imageUrl;
}
db.collection('products').doc(id).update(product).then(() => {
console.log("Document successfully updated!");
setTimeout(()=>window.location.href = "/readit.html",500)
}).catch((error) => {
console.error("Error updating document: ", error);
});
}
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>

