Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Conectar a um Backend do Atlas App Services - SDK do Node.js

Nesta página

  • Antes de começar
  • Acesse o cliente do aplicativo
  • Recuperar uma instância do cliente do aplicativo
  • Configurar um tempo limite para o cliente do aplicativo
  • Criptografar metadados de aplicativos
  • Conecte-se a um servidor MongoDB específico
  • Conecte-se a um servidor MongoDB diferente durante o tempo de execução

O cliente do aplicativo é a interface para o backend do Atlas App Services. Ele fornece acesso à funcionalidade de autenticação , funções e gerenciamento de sincronização.

  1. Criar um App Services App

  2. Instalar o Realm Node.js SDK

Para se conectar ao backend do App Services a partir do seu cliente, você precisa criar um objeto de configuração. Em seguida, passe esse objeto de configuração para uma instância Realm.App() .

Você deve incluir o campo id e o App ID para seu App Services App, que você pode encontrar na UI do App Services.

// Initialize your App.
const app = new Realm.App({
id: "<yourAppId>",
});

Você pode criar várias instâncias do cliente de aplicativo para se conectar a vários aplicativos. Todas as instâncias de cliente de aplicativo que compartilham a mesma ID de aplicativo usam a mesma conexão subjacente.

Importante

Alterando uma configuração de aplicativo após inicializar o aplicativo

Alterado na versão 12.6.0: baseUrl não está armazenado em cache na configuração da aplicação.

Quando você inicializa o cliente de aplicação, a configuração é armazenada em cache internamente. A tentativa de fechar e reabrir uma aplicação com uma configuração alterada dentro do mesmo processo não tem efeito. O cliente continua usando a configuração em cache.

Iniciando com Node.js SDK versão 12.6.0, o baseUrl no AppConfiguration não é armazenado em cache. Isso significa que você pode alterar o baseUrl e o cliente da aplicação usará a configuração atualizada. Em versões anteriores do SDK, as alterações no baseUrl em uma configuração de aplicativo em cache não têm efeito.

Para recuperar uma instância do cliente de aplicativo de qualquer lugar em seu aplicativo, chame Realm.App.getApp() e passe seu App ID.

const app = Realm.App.getApp("<yourAppId>");

Você pode configurar um timeout opcional para solicitações em seu AppConfiguration. Ele aceita vários milissegundos antes que a solicitação expire.

Você pode usar esse intervalo de tempo limite com o booleano opcional da configuração de sincronização cancelWaitsOnNonFatalErrors . Quando o intervalo de tempo limite termina, qualquer trabalho pendente que esteja aguardando uploads e downloads é cancelado. Quando essa configuração é falsa, a espera por uploads e downloads não é cancelada porque o Realm trata esses tempos limite como erros não fatais.

Para obter um exemplo, consulte Cancelar operações assíncronas após um tempo-limite.

const app = new Realm.App({
id: APP_ID,
// You can optionally specify a timeout in milliseconds
timeout: 10000,
});

Você pode criptografar os metadados que o Atlas App Services armazena nos dispositivos do cliente. Use os valores do enum MetadataMode para determinar o comportamento da criptografia.

Para criptografar os metadados do app:

  1. Importar MetadataMode de Realm e importar outras dependências:

    import Realm, { BSON, MetadataMode } from "realm";
    import Realm, {
    AppConfiguration,
    BSON,
    MetadataMode,
    Configuration,
    } from "realm";
  2. Crie um objeto de configuração do aplicativo que contenha a propriedade metadata .

  3. Defina metadata.mode como MetadataMode.Encryption.

  4. Defina metadata.encryptionKey para a chave que você deseja usar para criptografia.

  5. Passe o objeto de configuração do aplicativo para new Realm.App().

// Retrieve encryption key from secure location or create one
const encryptionKey = new ArrayBuffer(64);
// Use encryption key in app configuration
const config = {
id: APP_ID,
metadata: { mode: MetadataMode.Encryption, encryptionKey: encryptionKey },
};
const app = new Realm.App(config);
// Retrieve encryption key from secure location or create one
const encryptionKey = new ArrayBuffer(64);
// Use encryption key in app configuration
const config: AppConfiguration = {
id: APP_ID,
metadata: { mode: MetadataMode.Encryption, encryptionKey: encryptionKey },
};
const app = new Realm.App(config);

Por padrão, o Atlas Device SDK se conecta ao Atlas usando o baseURL global de https://services.cloud.mongodb.com. Em alguns casos, você pode querer se conectar a um servidor diferente:

  • Seu App Services App usa o sistema local e você deseja se conectar diretamente a um baseURL local em sua região.

Você pode especificar um baseURL no AppConfiguration:

.. code-block:: javascript
const appConfig = {
id: APP_ID,
baseUrl: "https://example.com",
};
const app = new App(appConfig);
.. code-block:: typescript
const appConfig: AppConfiguration = {
id: APP_ID,
baseUrl: "https://example.com",
};
const app = new App(appConfig);

Novidades na versão 12.8.0.

Em alguns casos, você pode querer alterar o baseURL enquanto o aplicativo está em execução.

Para alterar o baseURL durante o tempo de execução, chame o método app.updateBaseUrl() . Observe que o valor da string não pode terminar em uma barra final.

const app = new App(EDGE_APP_ID);
await app.updateBaseUrl("http://localhost:80");
// ... log in a user and use the app...
// ... some time later...
// Reset baseURL to the default: https://services.cloud.mongodb.com
await app.updateBaseUrl(null);
const app = new App(EDGE_APP_ID);
await app.updateBaseUrl("http://localhost:80");
// ... log in a user and use the app...
// ... some time later...
// Reset baseURL to the default: https://services.cloud.mongodb.com
await app.updateBaseUrl(null);

Essa API é experimental, portanto, você deve usar a importação experimental no arquivo em que deseja usar essa API:

import "realm/experimental/base-url";

O método app.updateBaseUrl() está em um módulo experimental que você deve importar separadamente. Para obter os tipos adequados deste módulo, você precisa definir os seguintes campos em seu arquivo tsconfig.json :

{
"target": "es2022",
"module": "node16",
"moduleResolution": "node16",
// ...
}

Se você quiser alterar o baseURL depois de fazer login em um usuário e abrir um banco de dados sincronizado, o aplicativo deverá executar uma redefinição do cliente. Execute estas etapas no seu código:

  1. Pause a sessão de sincronização.

  2. Atualize o baseURL chamando o método app.updateBaseUrl() .

  3. Faça o fluxo de autenticação novamente para fazer login do usuário por meio do novo baseURL.

  4. Abra um banco de dados sincronizado extraindo dados do novo servidor.

Tanto o servidor quanto o cliente devem estar online para que o usuário se autentique e se conecte ao novo servidor. Se o servidor não estiver online ou o cliente não tiver uma conexão de rede, o usuário não poderá autenticar e abrir o banco de dados.

Voltar

Serviços Atlas App