• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 지금은 메세지 보낼 때 개나소나(firebase채팅만들기5회차)

지금은 메세지 보낼 때 개나소나(firebase채팅만들기5회차)

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #68367

    김민승
    참가자
    응용으로 선생님께서 메세지를 보낼때 메세지에 저장된 uid와 현재 메세지를 보내는 uid가 같은지 확인하라는 규칙을 추가하라고 하셨습니다.
    그래서 저는 규칙에  match /chatroom/{docid}/messages/{docid2} {
        	                           allow read, write: if request.auth.uid == resource.data.uid;
                             }
     이런 규칙을 만들었는데 메세지가 보내지지 않네요 어떤 문제가 있는건가요?
    #68368

    김민승
    참가자
    1. chat.html 코드
    
      <script>
         const db = firebase.firestore();
         const storge = firebase.firestore();
         var 내uid = JSON.parse(localStorage.getItem('user')).uid
         db.collection('chatroom').where('who','array-contains',내uid).get().then((result)=>{
            result.forEach((doc)=>{
                var 템플릿 = `
                <a style="text-decoration:none" href = chatting.html?id=${doc.id}>
                  <li class="list-group-item">
                      <h6>${doc.data().product}</h6>
                      <h6 class="text-small">${doc.id}{</h6>
                  </li>
                </a>`;
                $('.chat-list').append(템플릿)
            })
        })
      </script>
    2. chatting.html 코드
    
    <script>
         const db = firebase.firestore();
         const storge = firebase.firestore();
         var 내uid = JSON.parse(localStorage.getItem('user')).uid
         var 쿼리스트링 = new URLSearchParams(window.location.search)
         
         db.collection('chatroom').doc(쿼리스트링.get("id")).collection('messages').orderBy('date').onSnapshot((result)=>{
            $('.chat-content').html('')
            result.forEach((doc)=>{
                // console.log(doc.data())
                messageUid = doc.data().uid;
                if(내uid == messageUid) {
                    var 템플릿 = `<li><span class="chat-box mine">${doc.data().content}</span></li>`;
                    $('.chat-content').append(템플릿) 
                }
                else {
                    var 템플릿 = `<li><span class="chat-box">${doc.data().content}</span></li>`;
                $('.chat-content').append(템플릿)
                }
            })
         })
         
         $('#send').click(function() {
            var 데이터 = {
               content: $('#chat-input').val(),
               date: new Date, 
               uid: 내uid,
            }
            console.log(데이터)
            db.collection('chatroom').doc(쿼리스트링.get("id")).collection('messages').add(데이터)
         })
      </script>
    
    
    #68371

    codingapple
    키 마스터
    콘솔창에 에러뜨나 확인해봅시다
    #68394

    김민승
    참가자
    이 문제를 정확히 해결했다고 하기에는 찝찝하지만 규칙에서 allow update: if (요청uid)==(저장되어있는 uid)로 변경했습니다. 잘가고 있는 해결방법인가요?
     
    #68415

    codingapple
    키 마스터
    request.auth 에서 uid 뽑아쓰는게 더 안전해보이긴 합니다
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠