2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2023년 1월 12일 19:21 #62341
이형민참가자아래 볼드처리한 코드 부분에서 해결이 되지 않는 부분이 있어 질문 남깁니다. detail.html 페이지에서 만약 로그인된 '내uid'와 게시글을 업로드한 사람의 '판매자uid'가 일치한다면, 'edit', 'delete' 버튼을 출력하고자 하고, 일치하지 않는다면 'chat' 버튼을 출력하고자 합니다. 판매자의 uid는 현재 파이어스토어 데이터베이스 상의 product 컬렉션에 저장되어있습니다. 현재 콘솔 상에 '판매자uid'를 출력시킨 상황이긴 하나, 어떻게 해야 위에 기재한 조건문을 완료할 수 있는지 모르겠습니다. 거짓말 안치고 4일을 고민했습니다. 선생님 제발 코드 좀 작성 부탁드릴게요 답답해 미치겠습니다. <!DOCTYPE html> <html lang="ko">
<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.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous" /> <link href="css/detail.css" rel="stylesheet" /> <link href="css/basic.css" rel="stylesheet" /> <link href="css/upload.css" rel="stylesheet" /> </head>
<body> <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://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.2.min.js" integrity="sha256-2krYZKh//PcchRtd+H+VyyQoZ/e3EcrkxhM8ycwASPA=" crossorigin="anonymous"></script>
<script> var firebaseConfig = { apiKey: "AIzaSyC0yKgR3yvA5YMKwCOk_SIQbfDIpyKh20w", authDomain: "stockbgm-c32fb.firebaseapp.com", projectId: "stockbgm-c32fb", storageBucket: "stockbgm-c32fb.appspot.com", messagingSenderId: "406644331721", appId: "1:406644331721:web:fac7736eebed51e9fca918", measurementId: "G-4SPZTKP7YY", }; // Initialize Firebase firebase.initializeApp(firebaseConfig); </script>
<nav class="navbar navbar-expand-lg bg-light"> <div class="container-fluid"> < img src="images/logo.png">
<div id="nav-name"> <span class="ms-auto mx-2" id="userName"></span> </div>
<div id="nav-login"> <span class="ms-auto mx-2" id="userName">로그인</span> </div>
<div id="nav-logout"> <span class="ms-auto mx-2" id="userName"><a class="navbar-brand" type="submit" class="btn btn-primary" id="logout">로그아웃</span> </div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
<div id="nav-mypage"> <li class="nav-item"> 마이페이지 </div>
<li class="nav-item"> About <li class="nav-item dropdown"> Bgm 마켓 <ul class="dropdown-menu">
- 마켓
- 중고 마켓
- 구매 목록
- <hr class="dropdown-divider">
- 구매하기
- 판매하기
<li class="nav-item"> 보증서(예정) <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> </div> </div> </nav><div class="container"> <div class="detail-title"> 상세페이지 </div> <div class="detail-pic my-4" style="background-image: url('https://placeimg.com/640/380/tech')"></div> <div> <h5 class="author">업로더 : </h5> <hr> <h5 class="title">제목 : </h5> <p class="date">게시일 : </p> <p class="content">설명 : </p> <p class="price">가격 : </p> </div> <button class="btn btn-outline-secondary" id="edit">수정</button> <button class="btn btn-outline-secondary" id="delete">삭제</button> <button class="btn btn-outline-secondary" id="chat">채팅</button> </div>
<script> const db = firebase.firestore(); const storage = firebase.storage();
var 내uid = JSON.parse(localStorage.getItem('user')).uid
$('#chat').click(function () { setTimeout(() => window.location.href = 'chat.html', 2000); var 데이터 = { who: [내uid, 판매자uid], 판매자uid, product: 상품명, date: new Date() } db.collection('chatroom').add(데이터) })
var 판매자uid; var 상품명;
var 쿼리스트링 = new URLSearchParams(window.location.search);
db.collection('product').doc(쿼리스트링.get('id')).get().then((result) => { console.log(result.data())
판매자uid = result.data().uid; 상품명 = result.data().title0;
$('.author').html('업로더 : ' + result.data().name0) $('.title').html('제목 : ' + result.data().title0) $('.date').html('게시일 : ' + result.data().date0.toDate().toLocaleString()) $('.content').html('설명 : ' + result.data().content0) $('.price').html('가격 : ' + result.data().price0 + '원') $('.detail-pic').css('background-image', `url(${result.data().image0})`) })
$('#edit').click(function () { window.location.href = 'edit.html?id=' + 쿼리스트링.get('id') })
$('#delete').click(function () { db.collection("product").doc(쿼리스트링.get('id')).delete().then(() => { setTimeout(() => window.location.href = "market.html", 1500); }) })
$(function () { db.collection('product').doc(쿼리스트링.get('id')).get().then((result) => { console.log(result.data().uid)
})
if (내uid == 판매자uid) { document.getElementById("edit").style.display = ""; document.getElementById("delete").style.display = ""; document.getElementById("chat").style.display = "none"; } else {//조건 1이 아닐떄 document.getElementById("edit").style.display = "none"; document.getElementById("delete").style.display = "none"; document.getElementById("chat").style.display = ""; } })
// // 유저정보 확인 // if (localStorage.getItem('user') != null) { // var 뺀거 = localStorage.getItem('user') // $('#userName').html(JSON.parse(뺀거).displayName) // }
// firebase.auth().onAuthStateChanged((user) => { // if (user) { // console.log(user.uid) // console.log(user.displayName) // localStorage.setItem('user', JSON.stringify(user)) // }
// })
$(function () { if (localStorage.getItem('user') != null) { var 뺀거 = localStorage.getItem('user') $('#userName').html(JSON.parse(뺀거).displayName) document.getElementById("nav-login").style.display = "none"; document.getElementById("nav-logout").style.display = ""; document.getElementById("nav-name").style.display = ""; document.getElementById("nav-mypage").style.display = ""; } else {//조건 1이 아닐떄 document.getElementById("nav-login").style.display = ""; document.getElementById("nav-logout").style.display = "none"; document.getElementById("nav-name").style.display = "none"; document.getElementById("nav-mypage").style.display = "none"; } })
firebase.auth().onAuthStateChanged((user) => { if (user) { console.log(user.uid) console.log(user.displayName) localStorage.setItem('user', JSON.stringify(user)) }
})
// 내uid = localStorage.getItem('user').uid // 판매자uid = db.collection('product').get().uid
$('#logout').click(function () { firebase.auth().signOut() localStorage.removeItem('user') setTimeout(() => window.location.href = "index.html", 3500); alert('로그아웃을 완료했습니다.'); })
</script> </body>
</html>
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.