Docs Menu
Docs Home
/ /
Archivos del reino

Configurar, abrir y cerrar un dominio - SDK de Node.js

Para abrir un reino local (no sincronizado), pase un Objeto Realm.Configuration para el método asincrónico Realm.open().

Nota

Acceder a la ruta del reino predeterminado

Si no especifica un path En el objeto Configuration, el SDK crea un dominio en la ruta predeterminada. Puede acceder y modificar la ruta predeterminada del dominio mediante la propiedad global Realm.defaultPath.

// Open a local realm file with a predefined Car object model
const realm = await Realm.open({
schema: [Car],
});

Después de crear un dominio en un dispositivo, puede omitir el esquema al acceder al mismo llamando a new Realm(). El SDK deriva el esquema del dominio del archivo de dominio existente en Realm.defaultPath.

Acceder a un dominio sin proporcionar un esquema solo funciona con dominios locales. Siempre debe proporcionar un esquema al usar un dominio sincronizado.

// Open the Realm with a schema
const realm = new Realm({ schema: [Car] });
realm.close();
// Reopen it without a schema
const reopenedRealm = new Realm();

Para crear un reino que se ejecute completamente en la memoria sin escribirse en un archivo, agregue inMemory: true a su objeto Realm.Configuration:

const realm = await Realm.open({
inMemory: true,
schema: [Car],
});

Nota

Los reinos en memoria pueden usar espacio en disco si la memoria se está agotando, pero los archivos creados por un reino en memoria se eliminan cuando usted cierra el reino.

Nuevo en la versión 10.14.0.

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().

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

  • Reino sincronizado con un reino sincronizado para un usuario diferente

Nota

Solo sincronización basada en particiones

Este método solo admite la conversión entre un dominio sin sincronización y la sincronización basada en particiones. Si tu aplicación usa la sincronización flexible, debes iterar manualmente los objetos de un dominio y copiarlos al otro.

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.

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

Tip

Es importante recordar llamar al método close() cuando se termina con una instancia de reino para evitar pérdidas de memoria.

realm.close();

El SDK Realm Node.js tiene soporte limitado para ejecutarse detrás de un proxy HTTP.

  • SDK de Node.js de Realm v10.3.0 o posterior.

  • Se requiere NPM CLI v6.9.0 o posterior.

Se requiere un paso manual para cambiar el paquete node-fetch utilizado por la capa de transporte de red.

Después de instalar el SDK de Realm Node.js, ejecute el siguiente comando para instalar un paquete diferente en el paquete de transporte de red:

npm install node-fetch@npm:fetch-with-proxy --prefix node_modules/realm-network-transport

Puede ejecutar un archivo de script arbitrario mientras enruta todas las solicitudes de Realm JS a través de un proxy HTTP.

En un sistema Unix, puede anteponer la asignación de una variable de entorno antes del comando:

HTTPS_PROXY=http://127.0.0.1:3128 node index.js

Volver

Archivos del reino

En esta página