Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

Atlas App Services バックエンドへの接続 - Node.js SDK

項目一覧

  • 始める前に
  • アプリ クライアントへのアクセス
  • アプリ クライアントのインスタンスの取得
  • アプリ クライアントのタイムアウトの設定
  • アプリ メタデータの暗号化
  • 特定のサーバーへの接続
  • 実行中に別のサーバーへの接続

App クライアントは、Atlas App Services バックエンドへのインターフェースです。 認証機能関数同期マネジメントへのアクセスを提供します。

  1. App Services アプリの作成

  2. Realm Node.js SDKのインストール

クライアントから App Services バックエンドに接続するには、構成オブジェクトを作成する必要があります。 次に、その構成オブジェクトを Realm.App()インスタンスに渡します。

App Services App には、 idフィールドと App IDを含める必要があります。これは App Services UI で確認できます。

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

複数のアプリに接続するには、複数のアプリクライアントインスタンスを作成します。 同じアプリ ID を共有するすべてのアプリクライアント インスタンスは、同じ基礎の接続を使用します。

重要

アプリ初期化後のアプリ構成の変更

バージョン12.6.0での変更: baseUrlはアプリ構成にキャッシュされません。

App クライアントを初期化すると、構成は内部的にキャッシュされます。 同じプロセス内で変更された構成でアプリを閉じてから再度開かしようとしても効果はありません。 クライアントはキャッシュされた構成を引き続き使用します。

Node.js SDK バージョン12.6.0 以降では、baseUrl 内のAppConfiguration はキャッシュされ ません 。つまり、 baseUrlを変更でき、アプリクライアントは更新された構成を使用します。 以前の SDK バージョンでは、キャッシュされたアプリ構成でbaseUrlを変更しても効果はありません。

アプリケーション内の任意の場所からアプリクライアントのインスタンスを取得するには、 Realm.App.getApp()を呼び出し、 App IDを渡します。

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

AppConfigurationでリクエストに任意のtimeoutを構成できます。 リクエストがタイムアウトする前に、数ミリ秒を受け入れます。

このタイムアウト間隔は任意の同期構成cancelWaitsOnNonFatalErrorsブール値で使用できます。 タイムアウト間隔が経過すると、アップロードとダウンロードを待機している未処理の作業がキャンセルされます。 この設定が false の場合、アップロードとダウンロードを待機してもキャンセルされません。これは、Realm がこれらのタイムアウトを致命的でないエラーとして扱うためです。

例については、「 タイムアウト後に非同期操作をキャンセルする 」を参照してください。

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

App Services がクライアント デバイスに保存するメタデータを暗号化できます。 暗号化動作を決定するには、 MetadataMode 列挙型の値を使用します。

アプリのメタデータを暗号化するには:

  1. Realm MetadataModeをインポートし、他の依存関係をインポートします。

    import Realm, { BSON, MetadataMode } from "realm";
    import Realm, {
    AppConfiguration,
    BSON,
    MetadataMode,
    Configuration,
    } from "realm";
  2. metadataプロパティを含むアプリ構成オブジェクトを作成します。

  3. metadata.modeMetadataMode.Encryptionに設定します。

  4. 暗号化に使用するキーにmetadata.encryptionKeyを設定します。

  5. アプリ構成オブジェクトを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);

デフォルトでは、Atlas Device SDK はhttps://services.cloud.mongodb.comのグローバルbaseURLを使用して Atlas に接続します。 場合によっては、別のサーバーに接続する必要があるかもしれません。

  • App Services Appはローカル配置を使用しており、リージョン内のローカル baseURL に直接接続する場合があります。

AppConfigurationbaseURLを指定できます。

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

バージョン12.8.0の新機能

場合によっては、アプリが の実行中中にbaseURLを変更する必要があるかもしれません。

実行中にbaseURLを変更するには、 app.updateBaseUrl()メソッドを呼び出します。 string 値は後続のスラッシュで終わることができないことに注意してください。

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

この API は実験的なため、この API を使用するファイルで実験的なインポートを使用する必要があります。

import "realm/experimental/base-url";

app.updateBaseUrl()メソッドは実験的なモジュールに含まれているため、個別にインポートする必要があります。 このモジュールから適切な型を取得するには、 tsconfig.jsonファイルに次のフィールドを設定する必要があります。

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

If you want to change the baseURL after you have logged in a user and have opened a synced database, the app must perform a client reset. コード内で次の手順を実行します。

  1. 同期セッションを一時停止します。

  2. app.updateBaseUrl()メソッドを呼び出してbaseURLを更新します。

  3. 認証フローを再度実行し、新しい baseURL からユーザーをログインさせGo 。

  4. 同期されたデータベースを開き、新しいサーバーからデータをプルします。

ユーザーが認証を行い、新しいサーバーに接続するには、サーバーとクライアントの両方がオンラインである必要があります。 サーバーがオンラインでない場合、またはクライアントにネットワーク接続がない場合、ユーザーは認証を行いデータベースを開くことができません。

戻る

Atlas App Services