Docs Menu
Docs Home
/ /
Archivos del reino

Agrupar un archivo Realm - SDK de React Native

Realm permite agrupar archivos de realm. Al agrupar un archivo de realm, se incluye una base de datos y todos sus datos en la descarga de la aplicación.

Esto permite a los usuarios iniciar aplicaciones por primera vez con un conjunto de datos iniciales. En el caso de los dominios sincronizados, la agrupación puede evitar una descarga inicial prolongada la primera vez que un usuario abre la aplicación. En su lugar, los usuarios solo deben descargar los cambios sincronizados realizados desde que se generó el archivo agrupado.

Importante

Sólo se aplica a los reinos locales

El contenido de esta página sólo se aplica a los reinos locales.

Advertencia

No se aplica a aplicaciones Expo

Este procedimiento no funciona para aplicaciones React Native creadas con Expo.

Siga estos pasos para crear y agrupar un archivo de reino para su aplicación React Native.

1

La forma más sencilla de crear un reino empaquetado para su aplicación React Native es escribir un script Node.js separado para crear el paquete.

Deberías utilizar el realm paquete para crear su paquete en lugar de @realm/react.

  1. Cree una aplicación de reino temporal que comparta el modelo de datos de su aplicación.

  2. Abra un dominio y agregue los datos que desea agrupar. Si usa un dominio sincronizado, espere a que se sincronice por completo.

    crear-reino-agrupado.js
    import 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();
  3. Anote la ruta del archivo del dominio incluido. Necesitará este archivo para usar el dominio incluido en su aplicación de producción, como se describe en la siguiente sección.

    temp_realm_app
    .
    ├── bundle.realm
    ... rest of files in _temp_ application
2

Ahora que tiene una copia del dominio que contiene los datos iniciales, agregue el archivo del dominio empaquetado a su aplicación de producción. La ubicación del dominio empaquetado varía según las compilaciones de iOS y Android.

  1. Abra la carpeta android generada por React Native en Android Studio.

  2. En el Project En el árbol, navegue hasta app > src > main. Haga clic derecho en el directorio main. Cree un nuevo subdirectorio llamado assets.

  3. Arrastre el archivo realm empaquetado al directorio assets.

  1. En Xcode, abra el archivo your_project_name.xcworkspace dentro del directorio ios generado por React Native.

  2. Seleccione su aplicación en el navegador del proyecto y seleccione la pestaña Build Phases en la descripción general del proyecto.

  3. Expandir el elemento Copy Bundle Resources.

  4. Haz clic en el icono +.

  5. Haga clic en el botón Add Other....

  6. Busca el archivo de dominio incluido y añádelo. No cambies la configuración predeterminada y selecciona el botón Finish.

3

El dominio ya está empaquetado y se incluirá cuando un usuario descargue la aplicación. Para agregar el archivo del dominio empaquetado al directorio de documentos de la aplicación, llame a Realm.copyBundledRealmFiles() antes de abrir el reino.

Realm.copyBundledRealmFiles() Agrega todos los archivos *.realm del paquete de la aplicación al directorio de documentos de la aplicación. Este método no sobrescribe ningún archivo existente con el mismo nombre, por lo que es seguro llamarlo cada vez que se inicia la aplicación.

Abra el reino incluido con el mismo nombre y configuración que especificó cuando creó inicialmente el reino incluido.

Ahora que tiene una copia del reino incluida con su aplicación de producción, necesita agregar código para usarlo.

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>
);
}

Volver

Configurar un reino

En esta página