Realm 파일 번들 - React Native SDK
Realm은 Realm 파일 번들 을 지원합니다. Realm 파일을 번들로 제공하면 애플리케이션 다운로드에 데이터베이스와 모든 해당 데이터가 포함됩니다.
이를 통해 사용자는 초기 데이터 설정하다 로 애플리케이션을 처음 시작할 수 있습니다. 동기화된 Realm의 경우 번들을 사용하면 사용자가 애플리케이션 을 처음 열 때 시간이 오래 걸리는 초기 다운로드 를 방지할 수 있습니다. 대신 사용자는 번들 파일 을 생성한 이후 발생한 동기화된 변경 사항만 다운로드 해야 합니다.
중요
로컬 Realm에만 적용
이 페이지의 내용은 로컬 영역에만 적용됩니다.
절차
다음 단계에 따라 React Native 애플리케이션을 위한 Realm 파일을 만들고 번들로 만들 수 있습니다.
번들할 Realm 파일 만들기
React Native 앱에 번들 영역을 생성하는 가장 쉬운 방법은 별도의 Node.js 스크립트를 작성하여 번들을 생성하는 것입니다.
번들을 생성하려면 @realm/react
대신 realm
패키지를 사용해야 합니다.
애플리케이션의 데이터 모델을 공유하는 임시 Realm 앱을 빌드합니다.
Realm을 열고 번들로 제공하려는 데이터를 추가합니다. 동기화된 Realm을 사용하는 경우 Realm이 완전히 동기화될 때까지 기다립니다.
create-bundled-realm.jsimport Realm from "realm"; import { Dog } from "./schemas"; // open realm const config = { schema: [Dog], path: "bundle.realm", }; const realm = await Realm.open(config); // add data to realm realm.write(() => { realm.create("Dog", { name: "Jasper", age: 10, type: "Golden Retriever" }); realm.create("Dog", { name: "Maggie", age: 12, type: "Collie" }); realm.create("Dog", { name: "Sophie", age: 6, type: "German Shepard" }); }); realm.close(); 번들 Realm 파일의 파일 경로를 확인합니다. 다음 섹션에 설명된 대로 프로덕션 애플리케이션에서 번들 영역을 사용하려면 이 파일이 필요합니다.
temp_realm_app. ├── bundle.realm ... rest of files in _temp_ application
앱에 Realm 파일 번들
이제 초기 데이터가 포함된 Realm의 복사본이 있으므로 번들로 제공되는 Realm 파일을 프로덕션 애플리케이션에 추가합니다. 번들 Realm을 배치하는 위치는 iOS 및 Android 빌드에 따라 다릅니다.
React Native에서 생성한
android
폴더를 Android Studio에서 엽니다.Project 트리에서
app > src > main
로 이동합니다.main
디렉토리 를 마우스 오른쪽 버튼으로 클릭합니다.assets
라는 새 하위 디렉토리를 만듭니다.번들 Realm 파일을
assets
디렉토리로 드래그합니다.
Xcode에서 React Native 에 의해 생성된
ios
디렉토리 내의your_project_name.xcworkspace
파일 을 엽니다.프로젝트 탐색기에서 앱 을 선택하고 프로젝트 개요에서 Build Phases 탭 을 선택합니다.
Copy Bundle Resources 항목을 확장합니다.
+ 아이콘을 클릭합니다.
Add Other... 버튼을 클릭합니다.
번들 영역 파일 을 찾아 추가합니다. 기본값 설정을 변경하지 않은 다음 Finish 버튼을 선택합니다.
앱에서 번들 Realm 열기
이제 영역 이 번들로 제공되며 사용자가 앱 을 다운로드할 때 포함됩니다. 번들 Realm 파일 을 앱의 문서 디렉토리 에 추가하려면 Realm .copyBundledRealmFiles( ) 영역 을 열기 전에 .
Realm.copyBundledRealmFiles()
애플리케이션 번들의 모든 *.realm
파일을 애플리케이션 문서 디렉토리에 추가합니다. 이 메서드는 이름이 같은 기존 파일을 재정의하지 않으므로 앱이 시작될 때마다 호출하는 것이 안전합니다.
번들 Realm을 처음 생성할 때 지정한 것과 동일한 이름 및 구성으로 번들 Realm을 엽니다.
이제 프로덕션 애플리케이션에 포함된 Realm의 복사본이 있으므로 이를 사용하려면 코드를 추가해야 합니다.
import React from 'react'; import {createRealmContext, Realm} from '@realm/react'; import {Dog} from './schema'; Realm.copyBundledRealmFiles(); const realmContext = createRealmContext({schema: [Dog], path: 'bundle.realm'}); const {RealmProvider} = realmContext; export default function OpenBundledRealm() { return ( <RealmProvider> {/* Rest of app has access to objects pre-populated in the bundled realm. */} <RestOfApp /> </RealmProvider> ); }