Today 요약

  1. 데이터베이스 연결하기

1. What I did?

1.1 실시간 데이터베이스 연결

강의를 따라한 건 아니였고 Firebase 공식문서를 참고해서 게더타운이랑 실시간 데이터베이스를 연결해서 캐릭터의 위치를 실시간으로 업데이트하려고 하는데, 데이터베이스 연결 자체를 못하고 있었다. 그런데 너무나 허무하게 해결했다. 게더타운의 경우 svlete로 작업하고 있었고, 라우팅까지 구현할 필요는 없어서 App.svelte 하나의 파일에서 모든 걸 다 처리하고 있었다.

import { getDatabase, ref, set } from 'firebase/database'

const db = getDatabase()

그래서 firebase/database에서 getDatebase를 하는 것만으로 firebase.js에서 생성한 db를 가지고 오는 건줄 알고 있었다.

const app = initializeApp(firebaseConfig)
const db = getDatabase(app)

하지만 프로그램을 주관?하는 그러니까 보통 App.js나 index.js 에서 firebase.js를 import 해가지고 와서 사용해야지 firebase app을 초기화해주는 것 같다. 그래야 firebase 앱을 초기화하기도 전에 데이터베이스를 생성하고 있다는 오류를 해결할 수 있다. 그렇게 해서 게더타운은 해결했다.

하지만 word-search 앱의 경우, 그렇게 했지만 실시간 데이터베이스에 데이터가 반영되지 않고 경고가 발생했다.

firebase/database: firebase warning: database lives in a different region.
please change your database url to ...

데이터베이스 url 주소가 안 맞으니까 변경하라는 이야기인데.. url주소를 몇 번이나 확인해도 이상이 없었다. 그래서 더 어의가 없었다. 혹시나 해서 싱가포르로 선택해서 그런걸까 해서 데이터베이스 생성할 때 US로 생성했는데..

이번에는 아래와 같은 오류가 발생했다.

Error writing data to the database: Error: PERMISSION_DENIED: Permission denied

데이터베이스의 쓰기 권한이 없다는 것 같았다. 그래서 바로 구글링 해봤다.

스크린샷 2023-10-03 오후 12.55.33.png

그래서 실시간 데이터베이스 규칙에서 쓰기 권한을 true로 설정해서 해결했다.

이렇게 실시간 데이터베이스 연결은 모두 완료했으니, 내일부터는 게임판 만드는 걸 하나씩 진행해보자.


profile
데이터리터러시를 중요하게 생각하는 프론트엔드 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN