Conectar a um Backend do Atlas App Services - SDK do Node.js
Nesta página
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.
Antes de começar
Acesse o cliente do aplicativo
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ê cliente 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.
Recuperar uma instância do cliente do aplicativo
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>");
Configurar um tempo limite para o cliente do aplicativo
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, });
Criptografar metadados de aplicativos
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:
Importar
MetadataMode
deRealm
e importar outras dependências:import Realm, { BSON, MetadataMode } from "realm"; import Realm, { AppConfiguration, BSON, MetadataMode, Configuration, } from "realm"; Crie um objeto de configuração do aplicativo que contenha a propriedade
metadata
.Defina
metadata.mode
comoMetadataMode.Encryption
.Defina
metadata.encryptionKey
para a chave que você deseja usar para criptografia.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);
Conecte-se a um servidor MongoDB específico
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);
Conecte-se a um servidor MongoDB diferente durante o tempo de execução
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 à direita.
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";
Typescript Config para Experimental API
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", // ... }
Alterar servidor com usuário conectado
Se você quiser alterar o baseURL
depois de fazer login em um usuário e abrir um banco de banco de dados sincronizado, o aplicativo deverá executar uma reinício do cliente. Execute estas etapas no seu código:
Atualize o
baseURL
chamando o métodoapp.updateBaseUrl()
.Go o fluxo de autenticação novamente para fazer login do usuário por meio do novo
baseURL
.Abra um banco de dados 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 de dados.