Context
項目一覧
- アプリ メタデータを取得する(
context.app
) - コンテキスト。 アプリ.id
- コンテキスト。 アプリ.clientAppId
- コンテキスト。 アプリ.name
- コンテキスト。 アプリ.projectId
- コンテキスト。 アプリ.deployment
- コンテキスト。 アプリ.lastDeployed
- コンテキスト。 アプリ.hostingUri
- 関数の呼び出し(
context.functions
) - context.functions.execute()
- アプリ環境を確認します(
context.environment
) - context.environment. tags
- context.environment.values
- MongoDB データソースまたはサードパーティ サービスに接続する(
context.services
) - context.services.get()
- リクエスト メタデータを取得する(
context.request
) - context.request
- ユーザー データを取得する(
context.user
) - context.user
- context. RunningAs System()
- 値を参照する(
context.values
) - context.values.get(valueName)
- HTTP リクエストの送信(
context.http
) - context.http.get()
- context.http.post()
- context.HTTP. put()
- context.http.patch()
- context.HTTP.delete()
- context.http.head()
Atlas Function は、受信リクエストのメタデータを含むグローバルな context
オブジェクトにアクセスし、アプリ内のコンポーネントとサービスへのアクセスを提供します。
context
オブジェクトは次のインターフェースを公開します。
プロパティ | 説明 |
---|---|
関数を実行中しているアプリに関するメタデータにアクセスします。 | |
環境値と現在の環境タグにアクセスします。 | |
アプリの関数を呼び出すクライアントオブジェクト。 | |
組み込み HTTP クライアント。 | |
関数 呼び出しをトリガーした受信リクエストについて説明します。 | |
データソースとサービスにアクセスできるクライアントオブジェクトを公開します。 | |
リクエストを開始したユーザーについて説明します。 | |
静的グローバル値が含まれます。 |
アプリ メタデータを取得する(context.app
)
context.app
オブジェクトには、関数を含むアプリに関するメタデータが含まれています。
{ "id": string, "clientAppId": string, "name": string, "projectId": string, "deployment": { "model": string, "providerRegion": string, }, "lastDeployed": string, "hostingUri": string, }
コンテキスト。 アプリ.id
関数を含むアプリの一意の内部 ID。
"60c8e59866b0c33d14ee634a"
コンテキスト。 アプリ.clientAppId
関数を含むアプリの一意のクライアントアプリ ID。
"myapp-abcde"
コンテキスト。 アプリ.name
関数を含むアプリの名前。
"myapp"
コンテキスト。 アプリ.projectId
アプリを含む Atlas プロジェクトの ID。
"5e1ec444970199272441a214"
コンテキスト。 アプリ.deployment
アプリの配置モデルとリージョンを記述するオブジェクト。
{ "model": "LOCAL", "providerRegion": "aws-us-east-1" }
コンテキスト。 アプリ.lastDeployed
アプリが最後に配置された日付と時刻( ISODate string として形式)。
"2022-10-31T12:00:00.000Z"
コンテキスト。 アプリ.hostingUri
静的ホスティングが有効になっている場合、この値はホストされたアセットのベースURLになります。 (静的ホスティングは非推奨です。 詳細はこちら)。
"myapp-abcde.mongodbstitch.com"
関数の呼び出し(context.functions
)
context.functions
インターフェースを介して、アプリケーション内の任意の関数を呼び出すことができます。
context.functions.execute()
特定の関数を呼び出し、その結果を返します。
context.functions.execute(functionName, ...args)
Parameter | タイプ | 説明 |
---|---|---|
functionName | string | 関数の名前。 |
args ... | 混合 | 関数に渡す引数の可変長リスト。 各関数パラメーターは、個別のカンマ区切りの引数にマップされます。 |
// difference: subtracts b from a using the sum function exports = function(a, b) { return context.functions.execute("sum", a, -1 * b); };
アプリ環境を確認します(context.environment
)
アプリの現在の環境構成に関する情報と環境固有の値には、 context.environment
インターフェースからアクセスできます。
context.environment. tags
アプリの現在の環境の名前を string として表します。
Possible values:
""
"development"
"testing"
"qa"
"production"
exports = async function() { switch(context.environment.tag) { case "": { return "There is no current environment" } case "development": { return "The current environment is development" } case "testing": { return "The current environment is testing" } case "qa": { return "The current environment is qa" } case "production": { return "The current environment is production" } } };
context.environment.values
各フィールドが環境値の名前を現在の環境内の値にマッピングするオブジェクト。
exports = async function() { const baseUrl = context.environment.values.baseUrl };
MongoDBデータソースまたはサードパーティ サービスに接続する(context.services
)
リンクされたMongoDB Atlasクラスターまたはフェデレーテッドデータソースのクライアントには、 context.services
インターフェースからアクセスできます。
context.services.get()
指定されたサービスのサービス クライアントを取得します。そのようなサービスが存在しない場合はundefined
を取得します。
context.services.get(serviceName)
Parameter | タイプ | 説明 |
---|---|---|
serviceName | string | 連結クラスター、フェデレーティッドデータベースインスタンス、またはサービスの名前。 アプリによって作成されたリンクされたデータソースでは、次のいずれかのデフォルト名が使用されます。
|
exports = async function() { // Get the cluster's data source client const mdb = context.services.get("mongodb-atlas"); // Reference a specific database/collection const db = mdb.db("myApp"); const collection = db.collection("myCollection"); // Run a MongoDB query return await collection.find({ name: "Rupert", age: { $lt: 50 }, }) };
リクエスト メタデータを取得する(context.request
)
context.requestインターフェイスを使用して、受信リクエストに関する情報にアクセスできます。
Tip
context.request
インターフェースにはリクエスト本体のペイロードは含まれていません。
context.request
関数の実行の原因となったHTTPリクエストに関する情報を含むオブジェクト。
{ "remoteIPAddress": <string>, "requestHeaders": <object>, "webhookUrl": <string>, "httpMethod": <string>, "rawQueryString": <string>, "httpReferrer": <string>, "httpUserAgent": <string>, "service": <string>, "action": <string> }
フィールド | タイプ | 説明 |
---|---|---|
remoteIPAddress | string | 関数リクエストを発行したクライアントの IP アドレス。 |
requestHeaders | オブジェクト | 各フィールドが、関数の実行の原因となったリクエストに含まれていたHTTPヘッダー のタイプにマップされるオブジェクト。string各フィールドの値は文字列の配列であり、各文字列はリクエストに含まれた指定された型のヘッダーにマップされます。 |
webhookUrl | string | 任意。 HTTPS endpoint Function では、エンドポイントのルートです。 |
httpMethod | string | 任意。 HTTPS endpoints Functions では、 HTTPメソッド エンドポイントを呼び出したリクエストの |
rawQueryString | string | クエリstring 受信HTTP リクエストに添付されます。すべてのクエリ パラメーターは、指定されたのと同じ順序で表示されます。 重要。 セキュリティ上の理由から、キーがAtlas stringであるクエリ のキーと値の |
httpReferrer | string | 任意。 リクエストが送信されたページの URL 。 この値は、 HTTP reference ヘッダー から派生します 。リクエストに |
httpUserAgent | string | 任意。 ソフトウェア ベンダー、オペレーティング システム、アプリケーションの種類など、リクエストのソースを識別する特性情報。 この値は、 HTTP ユーザーエージェント ヘッダー から派生します 。リクエストに |
次のcontext.request
ドキュメントは、macOSHigh Sierra で Chrome 73を使用して参照するユーザーによって、 https://myapp.example.com/
から発行された関数呼び出しを反映しています。
exports = function() { return context.request }
{ "remoteIPAddress": "54.173.82.137", "httpReferrer": "https://myapp.example.com/", "httpUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36", "rawQueryString": "?someParam=foo&anotherParam=42", "requestHeaders": { "Content-Type": ["application/json"], "Cookie": [ "someCookie=someValue", "anotherCookie=anotherValue" ] } }
ユーザー データを取得する(context.user
)
context.user
インターフェースを使用して、関数を呼び出したアプリケーションまたはシステムユーザーに関する情報にアクセスできます。
context.user
関数を呼び出した認証ユーザーのユーザーオブジェクト。
{ "id": <string>, "type": <string>, "data": <document>, "identities": <array> }
フィールド | タイプ | 説明 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | ユーザーを一意に識別するObjectIdの string 表現。 | ||||||||||||||||
type | string | ユーザーのタイプ。 次のタイプが利用可能です。
| ||||||||||||||||
data | ドキュメント | ユーザーを説明するメタデータを含むドキュメント。 このフィールドは、ユーザーに関連付けられているすべての システム関数では、 | ||||||||||||||||
custom_data | ドキュメント | アプリケーションのカスタムユーザーデータコレクションからのドキュメントで、ユーザーのIDを指定します。 カスタムユーザーデータコレクションを使用して、アプリケーションのユーザーに関する任意のデータを保存できます。 カスタム ユーザー データは、MongoDB ドキュメントの最大サイズである | ||||||||||||||||
identities | 配列 | ユーザーに関連付けられた認証プロバイダ ID のリスト。 ユーザーが初めて特定のプロバイダーにログインすると、App Services はそのユーザーを、一意な識別子とプロバイダーからのユーザーに関する追加メタデータを含む ID オブジェクトに関連付けます。 後続のログインでは、App Services は既存の ID データを更新しますが、新しい ID は作成しません。 ID オブジェクトの形式は次のとおりです。
|
context. RunningAs System()
関数がシステムユーザーとして実行中されている場合は、 true
であるブール値に評価されます。
exports = function() { const isSystemUser = context.runningAsSystem() if(isSystemUser) { // Do some work with the system user. } else { // Fail. } }
値を参照する(context.values
)
context.values
インターフェースを使用して、 関数 でアプリの静的値にアクセスできます。
context.values.get(valueName)
指定された値名に関連付けられているデータを取得します。値が存在しない場合はundefined
を取得します。 このデータは、プレーンテキストのJSON値であるか、 値を通じて公開されるシークレットのいずれかです。
Parameter | タイプ | 説明 |
---|---|---|
valueName | string | 値の名前。 |
exports = function() { // Get a global value (or `undefined` if no Value has the specified name) const theme = context.values.get("theme"); console.log(theme.colors) // Output: { red: "#ee1111", blue: "#1111ee" } console.log(theme.colors.red) // Output: "#ee1111" };
HTTPリクエストの送信(context.http
)
context.http
インターフェースを使用して組み込みクライアントを介してHTTPS requestsを送信できます。
context.http.get()
HTTP GET を送信する 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.get()
を参照してください。
exports = async function() { const response = await context.http.get({ url: "https://www.example.com/users" }) // The response body is a BSON.Binary object. Parse it and return. return EJSON.parse(response.body.text()); };
context.http.post()
HTTP POST を送信する 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.post()
を参照してください。
exports = async function() { const response = await context.http.post({ url: "https://www.example.com/messages", body: { msg: "This is in the body of a POST request!" }, encodeBodyAsJSON: true }) // The response body is a BSON.Binary object. Parse it and return. return EJSON.parse(response.body.text()); };
context.HTTP. put()
HTTP PUT を送信する 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.put()
を参照してください。
exports = async function() { const response = await context.http.put({ url: "https://www.example.com/messages", body: { msg: "This is in the body of a PUT request!" }, encodeBodyAsJSON: true }) // The response body is a BSON.Binary object. Parse it and return. return EJSON.parse(response.body.text()); };
context.http.patch()
HTTP PATCH の送信 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.patch()
を参照してください。
exports = async function() { const response = await context.http.patch({ url: "https://www.example.com/diff.txt", body: { msg: "This is in the body of a PATCH request!" }, encodeBodyAsJSON: true }) // The response body is a BSON.Binary object. Parse it and return. return EJSON.parse(response.body.text()); };
context.HTTP.delete()
HTTP DELETE の送信 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.delete()
を参照してください。
exports = async function() { const response = await context.http.delete({ url: "https://www.example.com/user/8675309" }) };
context.http.head()
HTTP HEAD を送信する 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.head()
を参照してください。
exports = async function() { const response = await context.http.head({ url: "https://www.example.com/users" }) // The response body is a BSON.Binary object. Parse it and return. EJSON.parse(response.body.text()); };