Docs Menu
Docs Home
/ /
Atlas App Services
/ /

データモデルの作成

項目一覧

  • Overview
  • 前提条件
  • Realm オブジェクトモデルからの Atlas App Services スキーマの作成
  • Atlas App Services スキーマからの Realm オブジェクト スキーマの作成
  • さらに読む

Device Sync データモデルは、Atlas Device SDK で使用される Realm オブジェクト スキーマと App Services スキーマの 2 つのコンシステント スキーマで構成されています。

次のように、アプリのデータモデルは、最初に Realm オブジェクト スキーマを使用して作成することも、最初に App Services スキーマを使用して作成することもできます。

  • Realm オブジェクト スキーマから App Services スキーマを作成する: モバイルファーストで開発していて、Atlas クラスターにまだデータが存在しない場合は、Realm オブジェクト スキーマを App Services スキーマに変換できます。

  • App Services スキーマから Realm オブジェクト スキーマを作成する: MongoDB Atlas クラスターに既にデータが存在する場合は、MongoDB はデータをサンプリングしてスキーマを生成します。その後、Atlas App Services は、そのスキーマを Realm オブジェクト スキーマに変換することで、Atlas Device SDK を使用してモバイル アプリケーション内で使用できます。

どちらのアプローチの場合でも、Atlas クラスターとモバイル アプリケーションの両方がそれぞれのデータモデルを使用するように設定すると、サーバーとクライアントの間でのデータモデルに対する変更は自動的に更新されます。

スキーマを作成するには、アプリに少なくとも 1 つのリンクされたデータソースが必要です。

ただし、サーバーレスインスタンスまたはフェデレーティッドデータベースインスタンス対象外です。

Realm オブジェクト スキーマは、モバイル クライアント SDKを通して変更または定義できます。Realm オブジェクト スキーマへの変更は、開発モードが有効になっている場合にのみ可能です。App Services は、Realm オブジェクト スキーマへの変更を App Services スキーマに反映します。

Realm オブジェクト スキーマの作成については、Atlas Device SDK 固有のドキュメントを参照してください。

1

開発モードは App Services UI で設定されます。

開発モードを有効にするには、Development Mode の右側にあるスライダーをクリックします。

開発モードを有効にする UI
クリックして拡大します
2

アプリケーションの開発を続けると、その変更に基づいてさまざまなデータ検証ルールを適用するように、そのアプリケーションとともにデータモデルを変更する必要があります。Development Mode がオンの場合、クライアント コード内で Realm オブジェクト スキーマを編集できます。Development Mode がオフの場合、データ検証が行われるため、 Development Mode がオンでない間は、App Services は Realm オブジェクト スキーマへの変更を受け入れません。

重要

必須のプライマリキー_id

Atlas Device Sync を使用するには、データモデルに _id というプライマリキー フィールドが必要です_id は、stringint、または objectId のいずれかのタイプになります。

あるグループがソーシャル メディア アプリケーションを開発しています。グループが最初にアプリケーションを開発したとき、ユーザーの誕生日はユーザーのデータモデルの必須フィールドでした。ただし、保存されるユーザー データの量に関するプライバシー上の懸念から、マネジメントはユーザーの誕生日フィールドを任意のフィールドにするという新しい要件を設けました。アプリケーション開発者は、App Services UI で Development Mode をオンにして、クライアント コード内でユーザー モデルを編集します。

const realmObjectModel = {
name: 'User',
properties: {
_id: 'objectId',
_partition: 'string',
name: 'string',
// developers set optional: true to adhere to the new requirement
birthday: {type: 'date', optional: true},
},
primaryKey: '_id'
};
Realm.open({schema: realmObjectModel, sync: {/*...*/}})
.then(realm => {
// ... use the realm instance to read and modify data
})
3

Development Mode がオンになっている間は、Atlas App Servicesはデータモデルへの書き込みを検証しないため、Realm オブジェクトモデルを自由に更新できます。Development Mode をオフにすると、MongoDB Atlas Application Services は Atlas App Services スキーマを自動的に更新し、それに基づいて Atlas クラスターに対する強制的なデータ検証を開始します。

Sync 画面で、Development Mode の横にあるスライダーをクリックして Development Mode をオフにします。そのUI は、開発モードがオフになっていることを示します。

開発モードが無効になっていることを表示する UI
クリックして拡大します

注意

モバイル クライアント コードから将来データモデルを更新するには、この手順を再度実行します。

1

開始するには、Atlas App Services スキーマが定義されていることを確認します。App Services は、この App Services スキーマを、モバイル アプリケーションで構成されて利用される Realm オブジェクト スキーマに変換します。

次の要件に注意してください。

  • The App Services スキーマは、_id と呼ばれるプライマリキー フィールドが必要です。_id は、stringint、または objectId のいずれかのタイプになります。

  • スキーマ オブジェクト タイプ名は、57 文字以下の UTF-8 文字とする必要があります。

2

Realm オブジェクト スキーマは、モバイル クライアント アプリケーション内のデータの定義および検証を行います。Realm オブジェクト スキーマを表示するには、 Atlas Device SDKs ページに移動し、[Realm Object Models] タブをクリックします。このページでは、Atlas App Services スキーマを、生成された Realm オブジェクト スキーマとして、選択した言語で表示できます。

生成されたRealm オブジェクト モデルとUI 内の関連する警告
クリックして拡大します
3

生成された Realm オブジェクト スキーマをクライアント アプリケーションで使用できます。データモデルでデータ検証を強制的に実施するには、Realm オブジェクト スキーマを使用してRealmを開きます。これにより、モバイル クライアントからデータベースに不適切なデータが入力されることを防止します。

モバイル アプリケーションのコードに統合したいオブジェクト モデルの Realm オブジェクト スキーマの右側にある [Copy] をクリックします。これにより、選択した SDK の Realm オブジェクト スキーマのコードがクリップボードにコピーされます。

IDE でモバイル アプリケーションのコードを開き、Realm オブジェクト スキーマのコードを貼り付けます。

const UserSchema = { // your copied and pasted Realm Object Schema
name: 'User',
properties: {
_id: 'objectId',
_partition: 'string',
name: 'string',
birthday: 'date'
},
primaryKey: '_id'
};
// Initialize a realm with your Realm Object Schema
Realm.open({schema: UserSchema, sync: { /* ... */ }})
.then(realm => {
// ... use the realm instance to read and modify data
})

生成された Realm オブジェクト スキーマを使用するには、Atlas Device SDK 固有のドキュメントを参照してください。

戻る

同期データモデルの概要