Atlas Functionの呼び出し - Kotlin SDK
Overview
Realm Kotlin SDK を使用して、クライアント アプリケーションからAtlas Functionを呼び出すことができます。 関数は、サーバー側のロジックを定義して実行できるサーバーレス JavaScript 関数です。 これらのサーバーサイド関数は認証されたユーザーのコンテキストで実行できるため、Atlas でデータに割り当てたルール、ロール、権限が尊重されます。
バージョン 1.9.0 の新機能。
EJSON エンコードを使用して、関数の引数をシリアル化し、値を返すことができます。 例を含む詳細については、 「 Atlas 用の EJSON エンコーディング 」を参照してください。
Atlas Function の構成と記述の詳細については、App Services ドキュメントの「 Atlas Function 」を参照してください。
始める前に
App Services Appで、 Atlas Functionを定義します。
クライアント プロジェクトで、App クライアントを初期化します。
次に、ユーザー を認証します。 関数にはユーザーオブジェクトがアクセスされます。
関数の呼び出し
重要
Atlas Functions を使用する際は、コード インジェクションから保護するために、クライアント データを必ずサニタイズしてください。
Kotlin SDK から Atlas Function を呼び出すには、その名前とすべての引数をFunctions.ball()に渡します。
たとえば、2 つの引数を受け取り、それらを加算して結果を返す sum
という名前の App Services App で実行されている Atlas Function を考えてみましょう。
// Add two numbers exports = function(a, b) { return a + b; };
Kotlin SDK からこの Atlas Function を呼び出すには次の手順に従います。
runBlocking { val app: App = App.create(appID) val user = app.login(credentials) // Access the Atlas Function through the authenticated user // Pass the Function name and all arguments val response = user.functions.call<Int>("sum", 1, 2) print(response) // prints: 3 }
Realm Kotlin SDK v1.8.x 以前の制限
バージョン 1.9.0 で変更。
Kotlin SDK v1.9.0 以降を使用している場合、これらの制限は適用されなくなります。
Kotlin直列化エンジン はまだサードパーティのライブラリをサポートしていないため、引数として渡すことができるタイプと、呼び出される関数で結果を逆シリアル化できるタイプには制限があります。
オブジェクトを引数として渡すことはできません。
以下は、有効な引数の型です。
プリミティブ
Bson
MutableRealmInt
RealmUUID
ObjectId
Realmインスタンス
RealmAny
配列
コレクション(リストまたはセット)
Map
以下は、有効な戻り値の型です。
プリミティブ
Bson
MutableRealmInt
RealmUUID
ObjectId
Realmインスタンス
RealmAny
BsonArray (配列引数型とコレクション引数型用)
BsonDocument (マップ引数型用)