문서 홈 → 애플리케이션 개발 → Atlas Device SDK
Realm 파일 번들 - React Native SDK
Realm은 Realm 파일 번들 을 지원합니다. Realm 파일을 번들로 제공하면 애플리케이션 다운로드에 데이터베이스와 모든 해당 데이터가 포함됩니다.
이를 통해 사용자는 초기 데이터 세트로 애플리케이션을 처음 시작할 수 있습니다. 동기화된 Realm의 경우 번들을 사용하면 사용자가 애플리케이션을 처음 열 때 시간이 오래 걸리는 초기 다운로드를 방지할 수 있습니다. 대신 사용자는 번들 파일을 생성한 이후에 동기화된 변경 사항만 다운로드해야 합니다.
중요
로컬 Realm에만 적용
이 페이지의 내용은 로컬 영역에만 적용됩니다.
경고
Expo 앱에는 적용되지 않음
절차
다음 단계에 따라 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을 열기 전에 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> ); }