Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

カスタムユーザーデータの管理 - Kotlin SDK

項目一覧

  • 前提条件
  • カスタムユーザーデータの読み取り
  • Atlas Function を使用したカスタムユーザー データの書込み
  • Atlas Function によるカスタム データの削除

このページでは、App Services App 内のカスタム ユーザー データと、Realm Kotlin SDK を使用してそれを管理する方法について説明します。

重要

現在、 Kotlin SDK でカスタム ユーザー データのみを読み取ることができます。 SDK への将来のアップデートでは、SDK からカスタム ユーザー データも書き込むことができるようになります。

他の Realm SDK、Atlas Functions、または Atlas を直接クエリすることで、カスタム ユーザー データを作成、アップデート、削除できます。

Atlas App Services を使用すると、ユーザーの希望する言語、誕生日、ローカル タイムゾーンなどの認証済みユーザーにデータを関連付けることができます。 ユーザーに関するこの任意のカスタム ユーザー データを保存し、クライアント アプリケーションから読み取ることができます。

バージョン 1.9.0 の新機能

EJSON エンコードを使用してカスタム ユーザー データを直列化できます。 例を含む詳細については、 「 Atlas 用の EJSON エンコーディング 」を参照してください。

カスタム ユーザー データを使用するには、カスタム ユーザー データが有効になっている App Services App が必要です。

カスタム ユーザー データを使用するApp Services Appを設定するには、次の手順を参照してください。

  1. アプリを Atlas App Services に接続する

  2. App Services のドキュメントでの「カスタム ユーザー データの有効化」

ユーザー.customDataAsBsonDocument() メソッドを使用して、現在ログインしているユーザーのカスタム ユーザー データを検索できます 拡張関数は次のとおりです。

val user = app.currentUser!!
val customUserData = user.customDataAsBsonDocument()

Atlas App Services は、基礎となるデータが変更されたときにすぐに、クライアント側のユーザー カスタム データ ドキュメントの値を動的に更新しませ。 代わりに、ユーザーがアクセス トークンを更新するたび、またはUser.refreshCustomData() メソッドを明示的に呼び出すと、App Services は最新バージョンのカスタム ユーザー データを取得します。 関数を使用して、ユーザーのカスタム データの最新バージョンをリクエストします。

// Update the custom data object
user.refreshCustomData()
// Now when you access the custom data, it's the
// updated data object
val updatedUserData = user.customDataAsBsonDocument()

Atlas Function を使用してカスタムユーザーデータに書込むことができます。 Atlas Function は、バックエンド アプリに構築されるサーバーサイドの JavaScript 関数です。 Atlas Function は Realm Kotlin SDK から直接呼び出せます。

現在、Realm Kotlin SDK からカスタム ユーザー データに直接書き込むことはできません

Atlas Function からカスタム ユーザー データを追加するための単一パターンはありません。 アプリケーションのユースケースに合わせて関数を記述する必要があります。

この例では、Atlas Function はクライアントによって渡されたオブジェクトを受け取り、Atlas のカスタムユーザーデータコレクションに追加されます。 関数は、カスタム ユーザー データがまだ存在しない場合はそれを作成し、存在する場合はその中のすべてのデータを置き換えます。

writeCustomUserData.js - サーバー上で実行中の Atlas Function(JavaScript)
exports = async function writeCustomUserData(newCustomUserData) {
const userId = context.user.id;
const customUserDataCollection = context.services
.get("mongodb-atlas")
.db("custom-user-data-database")
.collection("custom-user-data");
const filter = { userId };
// Replace the existing custom user data document with the new one
const update = { $set: newCustomUserData };
// Insert document if it doesn't already exist
const options = { upsert: true };
const res = await customUserDataCollection.updateOne(filter, update, options);
return res;
};

この関数を呼び出すための Kotlin SDK コード:

// Write the custom user data through a call
// to the `writeCustomUserData` function
val functionResponse = user.functions
.call<BsonDocument>("writeCustomUserData",
mapOf("userId" to user.id, "favoriteColor" to "blue")
)
// Refreshed custom user data contains updated
// `favoriteColor` value added in above Atlas Function call
user.refreshCustomData()
val updatedUserData = user.customDataAsBsonDocument()

注意

Atlas Function の詳細については、次のドキュメントを参照してください。

カスタム ユーザー データは、ユーザーオブジェクトにリンクされたドキュメントに保存されます。

重要

ユーザーを削除しても、カスタム ユーザー データは削除されませ。 法的コンプライアンスを確保するために(例: Apple のアカウント削除要件 に準拠するために)、ユーザー データを完全に削除する必要がある場合があります。 )。

カスタム ユーザー データを削除するには、ユーザーのカスタム データ ドキュメントを手動で削除する必要があります。

Atlas Function を使用してカスタムユーザーデータを削除できます。 現在、Realm Kotlin SDK からカスタム ユーザー データを直接削除することはできません。

この例では、Atlas Function は引数を必要としません。 この関数は、 関数コンテキスト を使用して呼び出し元のユーザー ID を判断し、ユーザーの ID と一致するカスタム ユーザー データ ドキュメントを削除します。

deleteCustomUserData.js - サーバー上で実行中の Atlas Function(JavaScript)
exports = async function deleteCustomUserData() {
const userId = context.user.id;
const customUserDataCollection = context.services
.get("mongodb-atlas")
.db("custom-user-data-database")
.collection("custom-user-data");
const filter = { userId };
const res = await customUserDataCollection.deleteOne(filter);
return res;
};

この関数を呼び出す Kotlin SDK コードでは、関数を呼び出すためにログイン ユーザーのみが必要です。

val deleteResponse = user.functions
.call<BsonDocument>("deleteCustomUserData")

戻る

ユーザーの削除