개발자
유튜브 무료 강의 따라하며 코딩 독학하고 있는 사람입니다. https://youtube.com/playlist?list=PLfLgtT94nNq3PzZinqs9Afuiai--r5NB_&si=ck9wzApzjvUZDJ6T 코딩애플님 강의를 따라서 파이어베이스 기반 웹사이트를 만들고 있었는데, 어떻게든 따라가다가 웹페이지에 개시글을 작성해서 파이어스토어 데이터베이스에 저장하는 부분에서 막혀버렸습니다. https://youtu.be/yYtTZcjCj_o?si=mg_U0cKB_kHUMhef 제가 실력이 매우낮아서, 이 상황에 알맞는 데이터 저장방법을 못찾겠어가지고 이렇게 물어봅니다. 아래의 코드 부분, 그러나까 웹페이지에 올린 개시글의 데이터가 파이어베이스의 데이터베이스에 기록하는 부분을 작업하다가 막혔습니다.
1<script>
2
3 const db = firebase.firestore();
4 $('#send').click(function(){
5 var 저장할거 = {
6 제목 : $('#title').val(),
7 가격 : $('#price').val(),
8 내용 : $('#content').val(),
9 }
10 db.collection('product').add(저장할거)
11 });
12
13
14 </script>
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2월 19일
당신의 코드는 올바른 방식으로 파이어베이스 데이터베이스에 데이터를 저장하려고 시도하고 있습니다. 그러나 firebase firestore에 데이터를 추가하는 과정에서 문제가 발생했다면, 그 원인은 다음과 같을 수 있습니다. 1. Firebase 설정이 제대로 초기화되지 않았다: Firebase 프로젝트를 시작하기 전에 Firebase SDK를 초기화해야 합니다. 이는 당신의 웹사이트가 Firestore와 통신할 수 있게 해줍니다. 초기화 코드는 보통 이런 식입니다: ```javascript <script src="https://www.gstatic.com/firebasejs/8.2.7/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/8.2.7/firebase-firestore.js"></script> var firebaseConfig = { apiKey: "API KEY", authDomain: "AUTH DOMAIN", projectId: "PROJECT ID", storageBucket: "STORAGE BUCKET", messagingSenderId: "SENDER ID", appId: "APP ID" }; firebase.initializeApp(firebaseConfig); ``` 여기서 `"API KEY"`, `"AUTH DOMAIN"`, `"PROJECT ID"` 등의 부분들은 당신이 파이어베이스 콘솔에서 본인의 프로젝트 설정을 봤을 때 나오는 값들로 대체해야 합니다. 2. 도큐먼트 접근 권한 문제: Firestore 보안 규칙(security rules) 때문에 클라이언트가 도큐먼트에 접근하지 못하는 경우가 있습니다. 이를 확인하려면 Firebase 콘솔에서 Firestore 보안 규칙을 확인해봐야 합니다. 3. 데이터 추가 코드 문제: `db.collection('product').add(저장할거)` 라인이 비동기 함수인데, 이를 제대로 처리하기 위해서는 `.then()` 메소드나 `async/await` 구문을 사용해야 합니다. 위의 내용을 수정한 코드는 다음과 같습니다: ```javascript <script> const db = firebase.firestore(); $('#send').click(async function(){ var 저장할거 = { 제목 : $('#title').val(), 가격 : $('#price').val(), 내용 : $('#content').val(), } // 데이터 추가와 관련된 에러를 잡기 위해 try/catch 구문을 사용합니다. try { await db.collection('product').add(저장할거); alert('Data added successfully'); } catch(err) { console.error(err); } }); </script> ``` 이 변수명들(`#title`, `#price`, `#content`)은 웹페이지의 HTML 요소 id와 해당하는지 확인하셔야 합니다. 여전히 문제가 발생한다면, 좀 더 자세한 코드나 에러 메시지 등 추가 정보를 제공해주시면 도움이 될 것입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!