Realm~App.sincronizar

Classe para interagir com o Atlas App Services.

Classes relacionadas

AsyncOpenTask
AuthError
BaseSubscriptionSet
In CompatibleSyncedRealmError
MutableSubscriptionSet
Sessão
inscrição
Conjunto de assinaturas
UserIdentity
Realm.App.Sync.SubscriptionsState
estáticoSomente leitura

enumeração representando o estado de um conjunto Realm.App.Sync.SubscriptionSet .

Tipo:
"pending" ou "complete" ou "error" ou "superseded"
propriedades:
  • Pendente
    • Tipo: "pending" ou "complete" ou "error" ou "superseded"
    • Padrão: pending
    • A atualização de assinatura foi persistida localmente, mas o servidor ainda não retornou todos os dados que corresponderam às query de assinatura atualizadas.

  • Completo
    • Tipo: "pending" ou "complete" ou "error" ou "superseded"
    • Padrão: complete
    • O servidor reconheceu a assinatura e enviou todos os dados que correspondiam às query de assinatura no momento em que o SubscriptionSet foi atualizado. O servidor agora está no modo de sincronização de estado constante, onde transmitirá as atualizações à medida que elas chegarem.

  • Erro
    • Tipo: "pending" ou "complete" ou "error" ou "superseded"
    • Padrão: error
    • O servidor retornou um erro e a sincronização está pausada para este Realm. Para visualizar o erro real, use Subscriptions.error.

      Você ainda pode usar Realm.App.Sync.SubscriptionSet#update para atualizar as assinaturas e, se a nova atualização não trigger um erro, a sincronização será reiniciada.

  • Substituído
    • Tipo: "pending" ou "complete" ou "error" ou "superseded"
    • Padrão: superseded
    • O SubscriptionSet foi substituído por um atualizado. Isso normalmente significa que alguém chamou Realm.App.Sync.SubscriptionSet#update em uma instância diferente do Subscriptions. Você não deve utilizar um SubscriptionSet substituído e, em vez disso, obter uma nova instância do Realm.subscriptions.

Realm.App.Sync._hasExistingSessions(aplicativo)
estático

Retorna true se o Realm ainda tiver uma referência a qualquer sessão de sincronização, independentemente de seu estado. Se false for retornado, significa que não existem sessões no momento.

Parâmetros:
  • aplicação opcional
    • Tipo: Realm.App
    • O aplicativo onde o Realm foi aberto.

Realm.App.Sync.enableSessionMultilexing(app)
estático

Habilite a multiplexação de várias sessões de sincronização em uma única conexão para um aplicativo Realm. Se tiver muitos realms sincronizados abertos, o sistema pode ficar sem descritores de arquivos devido a todos os soquetes abertos para o servidor. A multiplexação de sessão foi projetada para aliviar isso, mas pode não funcionar com um servidor configurado com failover. Use somente se estiver vendo erros ao atingir o limite do descritor de arquivos e souber que está usando muitas sessões de sincronização.

Parâmetros:
  • aplicação
Realm.App.Sync.getAllSyncSessions(usuário)[Realm.App.Sync.Session, ...]
estático

Retorna todas as sessões de sincronização de um usuário.

Parâmetros:
Retorna: [Realm.App.Sync.Session, ...] uma série de sessões
Realm.App.Sync.getSyncSession(usuário, partitionValue)Realm.App.Sync.Session
estático

Retorna a sessão associada a um usuário e valor da partição.

Parâmetros:
  • Valor da partição
    • Tipo: string ou number ou ObjectId ou null
Retorna: Realm.App.Sync.Session a sessão
Realm.App.Sync.initiateClientReset(app, caminho)
estáticoObsoleto(a)

Inicie um reinício do cliente. O Realm deve ser fechado antes da redefinição.

Um Realm sincronizado pode precisar ser redefinido se as comunicações com o servidor do Atlas Device Sync indicarem um erro irrecuperável que impeça de continuar com a sincronização normal. O motivo mais comum para isso é se um cliente estiver desconectado por muito tempo.

A cópia local do Realm é movida para um diretório de recuperação por segurança.

As gravações locais que não foram sincronizadas com êxito com o Atlas estarão presentes na cópia de recuperação local do Arquivo de Realm. O Realm rebaixado conterá inicialmente apenas os dados presentes no momento em que o Realm foi sincronizado no servidor.

Parâmetros:
  • aplicação opcional
    • Tipo: Realm.App
    • O aplicativo onde o Realm foi aberto.

  • caminho opcional
    • Tipo: string
    • O caminho para o Realm a ser redefinido. Lança erro se a redefinição não for possível.

Exemplo:
{
  // Once you have opened your Realm, you will have to keep a reference to it.
  // In the error handler, this reference is called `realm`
  const config = {
    // schema, etc.
    sync: {
      user,
      partitionValue,
      error: (session, error) => {
        if (error.name === 'ClientReset') {
          let path = realm.path; // realm.path will no be accessible after realm.close()
          realm.close();
          Realm.App.Sync.initiateClientReset(app, path);
          // - open Realm at `error.config.path` (oldRealm)
          // - open Realm with `config` (newRealm)
          // - copy required objects from oldRealm to newRealm
          // - close both Realms
        }
      }
    }
  };
}
Realm.App.Sync.reconnect(app)
estático

Chamar esse método forçará o Realm a tentar reconectar o aplicativo Realm ao servidor imediatamente.

O Realm se reconectará automaticamente, mas usando o backoff exponencial. Isso significa que, se o dispositivo estiver offline por um longo período, restaurar a conexão depois que ele voltar a ficar online pode levar mais tempo do que o esperado. Em situações em que é possível detectar a condição de rede (por exemplo, Modo avião). Chamar manualmente esse método pode proporcionar uma experiência de usuário mais tranquila.

Parâmetros:
  • aplicação
Realm.App.Sync.setLogger(app, logger)
estático

Capture o registro do cliente de sincronização. Você só pode definir o nível de registro uma vez e deve fazer isso depois de criar uma instância do aplicativo, mas antes de abrir qualquer Realms.

Consulte: {Realm.App.Sync~setLogLevel}
Parâmetros:
  • aplicação
  • logger
Exemplo:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogger(app, (level, message) => console.log(`[${level}] ${message}`));
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setLogLevel(aplicação, nível)
estático

Defina o nível de registro de sincronização. Você só pode definir o nível de registro uma vez e deve fazer isso depois de criar uma instância do aplicativo, mas antes de abrir qualquer Realms.

Parâmetros:
  • aplicação
  • level
    • Tipo: LogLevel
    • O novo nível de registro.

Exemplo:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogLevel(app, "all");
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setUserAgent(app, userAgent)
estático

Defina a parte da aplicação da string agente do usuário que será enviada ao Objeto de Realm servidor quando uma sessão for criada.

Esse método só pode ser chamado até o ponto em que o primeiro Realm é aberto. Depois disso, o User-agente não poderá mais ser alterado.

Parâmetros:
  • aplicação
  • agente do usuário
    • Tipo: string
    • a descrição do agente do usuário

ClientResetConfiguration

Descreve as opções para configurar o reinício do cliente.

Tipo:
Object
propriedades:
  • Modo
    • Tipo: string
    • Ou "manual" (obsoleto, consulte também Realm.App.Sync.initiateClientReset()), "discardUnsyncedChanges" (baixe uma nova cópia do servidor), "recuperarUnsyncedChanges" (comando remoto e local mesclado, alterações não sincronizadas) ou "recuperarOrDiscardUnsyncedChanges" (baixe uma nova cópia de servidor se a recuperação de alterações não sincronizadas não for possível)

  • onBefore opcional
    • Tipo: callback(realm) ou null
    • chamado antes da sincronização iniciar um reinício do cliente (somente para os modos "discardUnsyncedChanges", "recuperUnsyncedChanges" ou "recuperOrDiscardUnsyncedChanges").

  • onAfter opcional
    • Tipo: callback(beforeRealm, afterRealm) ou null
    • chamado após a execução do reinício do cliente; beforeRealm e afterRealm são instâncias do Realm antes e depois da redefinição do cliente (somente para os modos "discardUnsyncedChanges", "recuperUnsyncedChanges" ou "recuperOrDiscardUnsyncedChanges").

  • onFallback opcional
    • Tipo: callback(session, path) ou null
    • chamado se a recuperação ou descarte falhar (somente para os modos "recuperarUnsyncedChanges" ou "recuperarOrDiscardUnsyncedChanges").

  • onManual opcional
    • Tipo: callback(session, path) ou null
    • executar o reinício do cliente manual - consulte também Realm.App.Sync.initiateClientReset() (apenas o modo "manual").

downloadBeforeOpenBehavior

As configurações de comportamento padrão se você quiser aguardar a conclusão do download de um Realm sincronizado antes de abri-lo.

InitialSubscriptionsConfiguration

objeto opcional para configurar a configuração de um conjunto inicial de assinaturas de Flexible Sync a serem usadas ao abrir o Realm. Se isso for especificado, Realm.open não será resolvido até que esse conjunto de assinaturas tenha sido totalmente sincronizado com o servidor.

Exemplo:

const config: Realm.Configuration = {
  sync: {
    user,
    flexible: true,
    initialSubscriptions: {
      update: (subs, realm) => {
        subs.add(realm.objects('Task'));
      },
      rerunOnOpen: true,
    },
  },
  // ... rest of config ...
};
const realm = await Realm.open(config);

// At this point, the Realm will be open with the data for the initial set
// subscriptions fully synchronized.
Tipo:
Object
propriedades:
  • update
    • Tipo: callback(realm)
    • a chamada de resposta é chamada com uma instância Realm.App.Sync~MutableSubscriptionSet e a instância Realm para permitir que você configure o conjunto inicial de assinaturas. Consulte Realm.App.Sync.SubscriptionSet#update para obter mais informações.

  • rerunOnOpen
    • Tipo: Boolean
    • sinalizador opcional. Se true, a chamada de resposta update será executada novamente toda vez que o Realm for aberto (por exemplo toda vez que um usuário abrir seu aplicativo), caso contrário (por padrão), ele só será executado se o Realm ainda não existir.

logCallback(nível, mensagem)

Uma chamada de resposta passada para Realm.App.Sync.setLogger ao instrumentar o cliente Atlas Device Sync com um registrador personalizado.

Parâmetros:
  • level
    • Tipo: number
    • O nível da entrada de registro entre 0 e 8, inclusive. Use isso como um índice em ['all', 'trace', 'debug', 'detail', 'info', 'warn', 'error', 'fatal', 'off'] para obter o nome do nível.

  • mensagem
    • Tipo: string
    • A mensagem da entrada de registro.

LogLevel
Tipo:
"all" ou "trace" ou "debug" ou "detail" ou "info" ou "warn" ou "error" ou "fatal" ou "off"
openLocalRealmBehavior

As configurações de comportamento padrão se você deseja abrir um Realm sincronizado imediatamente e começar a trabalhar nele. Se esta for a primeira vez que você abre o Realm, ele estará vazio enquanto os dados do servidor estão sendo baixados em segundo plano.

OpenRealmBehaviorConfiguration

Especifique como abrir um Realm sincronizado.

Tipo:
Object
propriedades:
  • type
    • Tipo: string
    • como abrir um Realm - 'downloadBeforeOpen' para aguardar a conclusão do download ou 'penImmediately' para abrir o Realm local

  • timeOut opcional
    • Tipo: number
    • quanto tempo esperar por um download (em ms). Padrão: infinito

  • timeOutBehavior opcional
    • Tipo: string
    • o que fazer quando o download expira - 'opLocalRealm' para abrir o Realm local ou 'throwException' para lançar uma exceção.

Tipo de provedor

O tipo de um provedor de autenticação, usado para autenticar um usuário.

Tipo:
"anon-user" ou "api-key" ou "local-userpass" ou "custom-function" ou "custom-token" ou "oauth2-google" ou "oauth2-facebook" ou "oauth2-apple"
Configuração SSL

Descreve as diferentes opções usadas para criar uma instância Realm com o Atlas Device Sync.

Tipo:
Object
propriedades:
  • validar
    • Tipo: boolean
    • Indicando se os certificados SSL devem ser validados. O padrão é true.

  • CertificatePath
    • Tipo: string
    • Um caminho onde encontrar certificados SSL confiáveis.

  • validateCertificates
    • Tipo: sslValidateCallback
    • Uma função de chamada de resposta usada para aceitar ou rejeitar o certificado SSL do servidor.

Realm.App.Sync.SubscriptionOptions

Opções para Realm.App.Sync.SubscriptionSet.add

Tipo:
Object
propriedades:
  • jogaOnUpdate
    • Tipo: boolean ou undefined
    • Por padrão, adicionar uma assinatura com o mesmo nome de uma existente, mas uma query diferente atualizará a assinatura existente com a nova query. Se throwOnUpdate estiver definido como verdadeiro, adicionar uma assinatura com o mesmo nome, mas uma query diferente lançará uma exceção. Adicionar uma assinatura com o mesmo nome e query é sempre um no-op.

SyncConfiguration

Descreve as diferentes opções usadas para criar uma instância Realm com a sincronização do Atlas App Services.

Tipo:
Object
propriedades:
  • flexível
    • Tipo: boolean
    • Se deve usar a Flexible Sync (se true) ou a sincronização baseada em partição (padrão)

  • Valor da partição
    • Tipo: string ou number ou BSON.ObjectId ou null
    • O valor da chave da partição. Válido apenas se estiver usando a sincronização baseada em partição.

  • onError opcional
    • Tipo: callback(session, syncError)
    • Uma função de retorno de chamada que é chamada em situações de erro. A chamada de resposta recebe dois argumentos: session e syncError. Se syncError.name == "ClientReset", syncError.path e syncError.config estiverem definidos e syncError.readOnly for verdadeiro (obsoleto, consulte Realm.App.Sync~ClientResetConfiguration). Caso contrário, syncError pode ter até cinco propriedades: name, message, isFatal, category e code.

  • customHttpHeaders opcional
    • Tipo: Object
    • Um mapa (string, string) de HTTP headers personalizados.

  • newRealmFileBehavior opcional
    • Tipo: OpenRealmBehaviorConfiguration
    • Se deve criar um novo arquivo e sincronizar em segundo plano ou aguardar a sincronização do arquivo. Se não for definido, o Realm será baixado antes de aberto.

  • existenteRealmFileBehavior opcional
    • Tipo: OpenRealmBehaviorConfiguration
    • Se deve abrir o arquivo existente e sincronizar em segundo plano ou aguardar a conclusão da sincronização do arquivo e abrir. Se não for definido, o Realm será baixado antes de aberto.