Docs Menu
Docs Home
/ /
Sincronizar datos

Sincronización basada en particiones - SDK de React Native

La Partition-Based Sync es una moda más antigua para utilizar Atlas Device Sync con el Realm React Native SDK. Recomendamos usar Flexible Sync para nuevas aplicaciones. La información en esta página es para usuarios que aún utilizan Partition-Based Sync.

Para obtener más información sobre la sincronización basada en particiones y cómo configurarla en Atlas App Services, consulte Sincronización basada en particiones en la documentación de App Services.

Cuando se selecciona Partition-Based Sync para la configuración de la aplicación de backend, la implementación del cliente debe incluir un valor de la partición. Este es el valor del campo clave de partición que se selecciona al configurar la Partition-Based Sync.

El valor de la partición determina a qué datos puede acceder la aplicación cliente.

Pasa el valor de la partición cuando abres un reino sincronizado.

Para abrir un reino de sincronización flexible, use @realm/reactLa función createRealmContext() y su valor devuelto RealmProvider.

En un RealmProvider que está anidado en UserProvider un, agregue una sync propiedad con un objeto SyncConfiguration que flexible: true contenga.

Tenga en cuenta que UserProvider pasa automáticamente un usuario autenticado a RealmProvider.

<RealmProvider
schema={[YourObjectModel]}
sync={{
partitionValue: 'testPartition',
}}>
<RestOfApp />
</RealmProvider>

Novedades en la realm@10.14.0 versión.

Para copiar datos de un reino existente a un nuevo reino con diferentes opciones de configuración, pase la nueva configuración al método Realm.writeCopyTo().

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.

En la configuración del nuevo reino, debes especificar.path

Si escribe el dominio copiado en un archivo de dominio ya existente, los datos se escriben objeto por objeto. La operación de copia reemplaza los objetos si ya existen para las claves primarias dadas. Los esquemas del dominio que copia y del dominio en el que escribe deben ser compatibles para que la operación de copia se realice correctamente. Solo se copian los objetos de los esquemas de ambas configuraciones.

El cambio de configuración puede incluir modificaciones en SyncConfiguration:

  • Reino local a reino sincronizado

  • Reino sincronizado con el reino local

El cambio de configuración también puede incluir cambios en la propiedad encryptionKey del Configuration:

  • Reino cifrado a reino no cifrado

  • Reino no cifrado a reino cifrado

Ejemplo

Convertir dominio local en dominio sincronizado

const localConfig = {
schema: [Car],
path: "localOnly.realm",
};
const localRealm = await Realm.open(localConfig);
const syncedConfig = {
schema: [Car],
path: "copyLocalToSynced.realm",
sync: {
user: app.currentUser,
partitionValue: "myPartition",
},
};
localRealm.writeCopyTo(syncedConfig);
const syncedRealm = await Realm.open(syncedConfig);
const localConfig: Realm.Configuration = {
schema: [Car],
path: "localOnly.realm",
};
const localRealm = await Realm.open(localConfig);
const syncedConfig: Realm.Configuration = {
schema: [Car],
path: "copyLocalToSynced.realm",
sync: {
user: app.currentUser!,
partitionValue: "myPartition",
},
};
localRealm.writeCopyTo(syncedConfig);
const syncedRealm = await Realm.open(syncedConfig);

También puede combinar cambios en la configuración. Por ejemplo, puede abrir un dominio cifrado local como un dominio sincronizado sin cifrar, o un dominio sincronizado sin cifrar como un dominio sincronizado y cifrado.

Ejemplo

Convertir un dominio cifrado sincronizado a un dominio local sin cifrar

// Create a secure key.
const encryptionKey = new Int8Array(64);
// ... store key
const syncedEncryptedConfig = {
schema: [Car],
path: "syncedEncrypted.realm",
sync: {
user: app.currentUser,
partitionValue: "myPartition",
},
encryptionKey,
};
const syncedEncryptedRealm = await Realm.open(syncedEncryptedConfig);
const localUnencryptedConfig = {
schema: [Car],
path: "copyLocalUnencrypted.realm",
};
syncedEncryptedRealm.writeCopyTo(localUnencryptedConfig);
const localUnencryptedRealm = await Realm.open(syncedEncryptedConfig);
// Create a secure key.
const encryptionKey = new Int8Array(64);
// ... store key
const syncedEncryptedConfig: Realm.Configuration = {
schema: [Car],
path: "syncedEncrypted.realm",
sync: {
user: app.currentUser!,
partitionValue: "myPartition",
},
encryptionKey,
};
const syncedEncryptedRealm = await Realm.open(syncedEncryptedConfig);
const localUnencryptedConfig: Realm.Configuration = {
schema: [Car],
path: "copyLocalUnencrypted.realm",
};
syncedEncryptedRealm.writeCopyTo(localUnencryptedConfig);
const localUnencryptedRealm = await Realm.open(syncedEncryptedConfig);

Puedes migrar tu App Services Device Sync Mode de Partition-Based Sync a Flexible Sync. La migración es un proceso automático que no requiere ningún cambio en el código de tu aplicación. La migración automática requiere la versión 11.10.0 o superior del SDK de Realm Node.js.

La migración le permite conservar sus usuarios y configuración de autenticación de App Services. Flexible Sync ofrece opciones de configuración de permisos más versátiles y una sincronización de datos más granular.

Para obtener más información sobre cómo migrar su aplicación de App Services de sincronización basada en particiones a sincronización flexible, consulte Migrar modos de sincronización de dispositivos.

La migración automática de la sincronización basada en particiones a la sincronización flexible no requiere cambios en el código de cliente. Sin embargo, para facilitar esta funcionalidad, Realm gestiona automáticamente las diferencias entre los dos modos de sincronización mediante:

  • Creación automática de suscripciones de sincronización flexible para cada tipo de objeto donde partitionKey == partitionValue.

  • Inyectar un campo partitionKey en cada objeto si no existe. Esto es necesario para la suscripción automática a Sincronización Flexible.

Si necesita actualizar el código de su cliente después de la migración, considere actualizar su base de código para eliminar las funciones de migración ocultas. Le recomendamos actualizar su base de código cuando:

  • Agregue un nuevo modelo o cambie un modelo en su base de código de cliente.

  • Agrega o cambia funcionalidad que implica leer o escribir objetos de Realm

  • Desea implementar un control más preciso sobre los datos que sincroniza

Realice estos cambios para convertir el código de cliente de sincronización basada en particiones para utilizar la sincronización flexible:

  • Agregue flexible:true a su objeto SyncConfiguration donde abre un reino sincronizado.

  • Agregue propiedades relevantes a sus modelos de objetos para usarlas en sus suscripciones de Sincronización Flexible. Por ejemplo, podría agregar una propiedad ownerId para permitir que un usuario sincronice solo sus propios datos.

  • Elimine las suscripciones automáticas de sincronización flexible y cree manualmente las suscripciones relevantes.

Para obtener ejemplos de estrategias de permisos de sincronización flexible, incluidos ejemplos de cómo modelar datos para estas estrategias, consulte la Guía de permisos de sincronización de dispositivos.

Al migrar de la sincronización basada en particiones a la sincronización flexible, Realm crea automáticamente suscripciones ocultas de sincronización flexible para su aplicación. La próxima vez que agregue o modifique suscripciones, le recomendamos lo siguiente:

  1. Eliminar las suscripciones generadas automáticamente.

  2. Agregue manualmente las suscripciones relevantes en la base de código de su cliente.

Esto le permite ver toda su lógica de suscripción junta en su base de código para futuras iteraciones y depuraciones.

Para obtener más información sobre las suscripciones de Flexible Sync generadas automáticamente, consulte Migrar la aplicación cliente a Flexible Sync.

Volver

Recuperación de datos tras restablecimiento manual del cliente

En esta página