App クライアントは、Atlas App Services バックエンドへのインターフェースです。 認証機能、関数、同期マネジメントへのアクセスを提供します。
始める前に
アプリ クライアントへのアクセス
クライアントから 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 列挙型の値を使用します。
アプリのメタデータを暗号化するには:
Realm
MetadataMode
をインポートし、他の依存関係をインポートします。import Realm, { BSON, MetadataMode } from "realm"; import Realm, { AppConfiguration, BSON, MetadataMode, Configuration, } from "realm"; metadata
プロパティを含むアプリ構成オブジェクトを作成します。metadata.mode
をMetadataMode.Encryption
に設定します。暗号化に使用するキーに
metadata.encryptionKey
を設定します。アプリ構成オブジェクトを
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);