React-Native Realm Migration

Lenny·2021년 12월 22일
1

리액트 네이티브로 개발을하다가, Realm의 스키마를 추가해야 할 일이 생겨서 스키마에 하나의 속성을 추가했다.

title 속성을 추가하고, 앱을 실행하니까 콘솔창에 여러가지 에러가떴는데, 그 중에서 내가 발견한 키워드는 Migration 이라는 단어였다.

Migration 단어의 의미는 "이주" 라는 뜻이었는데, 아마 스키마를 수정하거나 새로운 스키마를 만들어서 Realm으로 open 시킬때, 기존에 있던 데이터를 이주해야한다는 의미같았다.

다음 스택오버플로우 링크를 참고했고, 나는 다음과 같은 방법을 시도했다!
https://stackoverflow.com/questions/42868522/react-native-realm-migration

  1. NewFeelingSchema 라는 스키마를 만들고, open한다.

하지만, 에러는 여전했다.


하지만 위 링크에서 다른 사람 코드중에서 "schemaVersion" 이라는 옵션이 눈에 띄었고 바로 적용시켰다!
그랬더니 에러가 생기지 않는다! 설마..? 하고 나는 NewFeelingSchema 를 지우고, 기존에 있던 FeelingSchema를 open했더니 에러가 뜨지 않는다!!
단순히 schemaVersion을 기입해줬더니 에러가 나지 않는것이다!

이유가 뭘까 찾아봤다. MongoDB 문서에서 찾은 schemaVersion에 관한 내용이다.

스키마 버전은 특정 시점에서 영역 스키마의 상태를 식별합니다. 영역 데이터베이스는 각 영역의 스키마 버전을 추적하고 이를 사용하여 각 영역의 개체를 올바른 스키마에 매핑합니다.
스키마 버전은 영역을 열 때 영역 구성에 포함할 수 있는 정수입니다. 클라이언트 응용 프로그램이 영역을 열 때 버전 번호를 지정하지 않으면 영역은 기본적으로 버전 0으로 설정됩니다.

위 내용을 읽고 바로 이해가 됬다. 나는 처음에 스키마버전 옵션을 설정하지 않았고, 디폴트로 0 이 들어가있는 상태였고, 스미카를 수정하거나 새로운 스키마를 추가해도 이미 존재하는 버전이 있어서 안되는거였다. 물론 버전을 유지한 채 Migration 을 진행하는 방법도 있겠지만, 현재 나는 데이터를 그대로 이주해야 할 그정도 규모의 프로젝트가 아니라서 이렇게 해결했다.

profile
🧑‍💻

0개의 댓글