Docs Menu
Docs Home
/ /
Archivos del reino

Agrupar un archivo de reino - Node SDK

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.

Para crear y agrupar un archivo de reino con su aplicación:

  1. Crea un archivo de reino que contenga los datos que deseas agrupar.

  2. Agregue el archivo de reino incluido a su aplicación de producción.

  3. En su aplicación de producción, abra el dominio desde el archivo de recursos incluido. Para dominios sincronizados, debe incluir la clave de partición.

Nota

Paquete de reinos sincronizados

La versión del SDK 10.12.0 introdujo la posibilidad de agrupar dominios sincronizados. Antes de la 10.12.0 versión, solo se podían agrupar dominios locales. Consulte la sección "Agrupar un dominio sincronizado" para obtener más información sobre las consideraciones y limitaciones al agrupar un dominio sincronizado.

  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.

  3. Utiliza el método writeCopyTo() para copiar el realm a un nuevo archivo:

    const originalPath = path.join(__dirname, "original.realm");
    const originalConfig = {
    schema: [Car],
    path: originalPath,
    };
    const originalRealm = await Realm.open(originalConfig);
    const copyPath = path.join(__dirname, "copy.realm");
    originalRealm.writeCopyTo(copyPath);

    writeCopyTo() Compacta automáticamente tu reino al tamaño más pequeño posible antes de copiarlo.

    Nota

    Diferencias entre reinos sincronizados y reinos solo locales

    El ejemplo anterior utiliza una SyncConfiguration para configurar un dominio sincronizado para el sync campo de la configuración. Para crear una copia de un dominio local, no incluya el sync campo en su objeto de configuración.

  4. Anote la ruta del archivo del dominio incluido, que se encuentra en la ubicación especificada en el argumento pasado a writeCopyTo() en el paso anterior. 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
    .
    ├── copyOfDefault.realm
    ... rest of files in _temp_ application

Ahora que tiene una copia del reino que contiene los datos iniciales, inclúyalo en su aplicación de producción.

Agregue el archivo de reino incluido creado en la sección anterior a su aplicación de producción.

aplicación del reino de producción
.
├── copyOfDefault.realm
... rest of files in _prod_ application

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

Cree una configuración con la ruta al dominio incluido como valor para el path campo. Pase esa configuración al método Realm.open(). Ahora puede trabajar con los datos de su dominio incluido en el dominio que acaba de abrir.

const copyConfig = {
schema: [Car],
path: "path/to/bundled/file.realm"
};
const copyRealm = await Realm.open(copyConfig);

Nota

Solo sincronización del mismo tipo

Este método solo permite copiar una configuración de sincronización basada en particiones para otro usuario de sincronización basada en particiones, o una configuración de sincronización flexible para otro usuario de sincronización flexible. No se puede usar este método para convertir entre un dominio de sincronización basada en particiones y uno de sincronización flexible, ni viceversa.

Generalmente, agrupar un dominio sincronizado funciona igual que agrupar un dominio local. Sin embargo, solo se pueden agrupar dominios completamente sincronizados. Asegúrese de que el dominio esté completamente sincronizado con el servidor antes de agruparlo:

const config = {
sync: {
user: app.currentUser,
partitionValue: app.currentUser.id,
},
schema: [Car],
};
const realm = await Realm.open(config);
// create many changes
realm.write(() => {
for (let i = 0; i < 25; i++) {
realm.create("Car", {
make: "Toyota",
model: "Prius",
miles: i,
owner: app.currentUser.id,
});
}
});
// ensure synchronize all changes before copy
await realm.syncSession.uploadAllLocalChanges();
await realm.syncSession.downloadAllServerChanges();
// changes are synchronized -- we can copy the realm
realm.writeCopyTo(__dirname + "syncedCopy.realm");

Importante

Agrupación de reinos sincronizados

Si su aplicación backend utiliza Sincronización Flexible, los usuarios podrían experimentar un reinicio del cliente la primera vez que abran el archivo de dominio incluido. Esto puede ocurrir cuando el tiempo máximo sin conexión del cliente está habilitado (esta opción está habilitada por defecto). Si el archivo de dominio incluido se generó más de los días especificados en la configuración de tiempo máximo sin conexión del cliente antes de que el usuario sincronice por primera vez, el usuario experimentará un reinicio del cliente.

Las aplicaciones que reinician el cliente descargan el estado completo del dominio desde el backend de la aplicación. Esto anula las ventajas de agrupar un archivo de dominio. Para evitar reinicios del cliente y conservar las ventajas de agrupar archivos de dominio:

  • Evite utilizar un tiempo máximo sin conexión del cliente en aplicaciones que agrupan un reino sincronizado.

  • Si su aplicación utiliza un tiempo máximo de desconexión del cliente, asegúrese de que la descarga de la aplicación siempre incluya un archivo de dominio sincronizado recientemente. Genere un nuevo archivo con cada versión de la aplicación y asegúrese de que ninguna versión permanezca actualizada durante más días que el tiempo máximo de desconexión del cliente.

Existen limitaciones adicionales al abrir un dominio sincronizado incluido que utiliza la sincronización basada en particiones, una versión anterior. Para obtener más información sobre el uso de dominios configurados con la sincronización basada en particiones, consulte Sincronización basada en particiones - SDK de Node.js.

Volver

Reducir el tamaño del archivo de Realm

En esta página