Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

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オブジェクトは次のインターフェースを公開します。

プロパティ
説明
context.app
関数を実行中しているアプリに関するメタデータにアクセスします。
環境値と現在の環境タグにアクセスします。
アプリの関数を呼び出すクライアントオブジェクト。
組み込み HTTP クライアント。
関数 呼び出しをトリガーした受信リクエストについて説明します。
データソースとサービスにアクセスできるクライアントオブジェクトを公開します。
リクエストを開始したユーザーについて説明します。
静的グローバル値が含まれます。

context.appオブジェクトには、関数を含むアプリに関するメタデータが含まれています。

{
"id": string,
"clientAppId": string,
"name": string,
"projectId": string,
"deployment": {
"model": string,
"providerRegion": string,
},
"lastDeployed": string,
"hostingUri": string,
}

関数を含むアプリの一意の内部 ID。

"60c8e59866b0c33d14ee634a"

関数を含むアプリの一意のクライアントアプリ ID。

"myapp-abcde"

関数を含むアプリの名前。

"myapp"

アプリを含む Atlas プロジェクトの ID。

"5e1ec444970199272441a214"

アプリの配置モデルとリージョンを記述するオブジェクト。

{
"model": "LOCAL",
"providerRegion": "aws-us-east-1"
}

アプリが最後に配置された日付と時刻( ISODate string として形式)。

"2022-10-31T12:00:00.000Z"

静的ホスティングが有効になっている場合、この値はホストされたアセットのベースURLになります。 (静的ホスティングは非推奨です。 詳細はこちら)。

"myapp-abcde.mongodbstitch.com"

context.functionsインターフェースを介して、アプリケーション内の任意の関数を呼び出すことができます。

特定の関数を呼び出し、その結果を返します。

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インターフェースからアクセスできます。

アプリの現在の環境の名前を 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"
}
}
};

各フィールドが環境値の名前を現在の環境内の値にマッピングするオブジェクト。

exports = async function() {
const baseUrl = context.environment.values.baseUrl
};

リンクされたMongoDB Atlasクラスターまたはフェデレーテッドデータソースのクライアントには、 context.servicesインターフェースからアクセスできます。

指定されたサービスのサービス クライアントを取得します。そのようなサービスが存在しない場合はundefinedを取得します。

context.services.get(serviceName)
Parameter
タイプ
説明
serviceName
string

連結クラスター、フェデレーティッドデータベースインスタンス、またはサービスの名前。

アプリによって作成されたリンクされたデータソースでは、次のいずれかのデフォルト名が使用されます。

  • クラスター: mongodb-atlas

  • フェデレーティッドデータベースインスタンス: mongodb-datafederation

MongoDB Atlas でのデータの読み取りと書込み
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インターフェイスを使用して、受信リクエストに関する情報にアクセスできます。

Tip

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であるクエリ のキーと値のsecret が自動的に削除されます。例、受信リクエストのクエリstringが ?secret=hello&someParam=42 の場合、そのリクエストの rawQueryString"someParam=42" になります。

httpReferrer
string

任意。 リクエストが送信されたページの URL 。

この値は、 HTTP reference ヘッダー から派生します 。リクエストにRefererヘッダーが含まれていない場合、これはundefinedになります。

httpUserAgent
string

任意。 ソフトウェア ベンダー、オペレーティング システム、アプリケーションの種類など、リクエストのソースを識別する特性情報。

この値は、 HTTP ユーザーエージェント ヘッダー から派生します 。リクエストにUser-Agentヘッダーが含まれていない場合、これはundefinedになります。

次の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インターフェースを使用して、関数を呼び出したアプリケーションまたはシステムユーザーに関する情報にアクセスできます。

関数を呼び出した認証ユーザーのユーザーオブジェクト。

{
"id": <string>,
"type": <string>,
"data": <document>,
"identities": <array>
}
フィールド
タイプ
説明
id
string
ユーザーを一意に識別するObjectIdの string 表現。
type
string

ユーザーのタイプ。 次のタイプが利用可能です。

タイプ
説明
" Normal"
ユーザーは、 APIキー プロバイダー以外の認証プロバイダを介してログインするアプリケーションユーザーです。
"server"
ユーザーは、任意のタイプの App Services APIキーでログインするサーバープロセスです。
"system"
ユーザーは 、すべてのルールをバイパスするシステムユーザーです。
data
ドキュメント

ユーザーを説明するメタデータを含むドキュメント。 このフィールドは、ユーザーに関連付けられているすべてのidentitiesのデータを組み合わせたものであるため、正確なフィールド名と値は、ユーザーが認証された認証プロバイダによって異なります。

システム関数では、 user.dataオブジェクトは空です。 context. RunningAs System()を使用して、 関数がシステムユーザーとして実行中されているかどうかをテストします。

custom_data
ドキュメント

アプリケーションのカスタムユーザーデータコレクションからのドキュメントで、ユーザーのIDを指定します。 カスタムユーザーデータコレクションを使用して、アプリケーションのユーザーに関する任意のデータを保存できます。 nameフィールドを設定すると、App Services はusernameメタデータフィールドにnameの戻り値を入力します。 Atlas App Services は、ユーザーがログする際などアクセス トークンを更新するたびに、データの新しいコピーを自動的に取得します。 基礎となるデータは通常のMongoDBドキュメントであるため、 MongoDB Atlasサービスを通じて標準のCRUD操作を使用して、ユーザーのカスタム データの定義および変更を行うことができます。

カスタム ユーザー データは、MongoDB ドキュメントの最大サイズである16MBに制限されています。 この制限に達しないようにするには、ユーザーの希望言語やアトミックイメージの URL など、小規模で比較的静的なユーザー データを各カスタム ユーザー データ ドキュメントに保存することを検討してください。 大規模なデータ、境界のないデータ、または頻繁に更新されるデータの場合は、カスタム ユーザー ドキュメントにデータへの参照のみを保存するか、カスタム ユーザー ドキュメントではなくユーザーの ID を参照してデータを保存することを検討してください。

identities
配列

ユーザーに関連付けられた認証プロバイダ ID のリスト。 ユーザーが初めて特定のプロバイダーにログインすると、App Services はそのユーザーを、一意な識別子とプロバイダーからのユーザーに関する追加メタデータを含む ID オブジェクトに関連付けます。 後続のログインでは、App Services は既存の ID データを更新しますが、新しい ID は作成しません。 ID オブジェクトの形式は次のとおりです。

{
"id": "<Unique ID>",
"provider_type": "<Provider Name>",
"data": {
"<Metadata Field>": <Value>,
...
}
}
フィールド名
説明
id
この ID を一意に識別するプロバイダーが生成したstring 。
provider_type
この ID に関連付けられている認証プロバイダのタイプ。
data
ユーザーを説明する認証プロバイダからの追加メタデータ。 具体的なフィールド名と値は、ユーザーがログインした認証プロバイダによって異なります。

関数がシステムユーザーとして実行中されている場合は、 trueであるブール値に評価されます。

exports = function() {
const isSystemUser = context.runningAsSystem()
if(isSystemUser) {
// Do some work with the system user.
} else {
// Fail.
}
}

context.valuesインターフェースを使用して、 関数 でアプリの静的にアクセスできます。

指定された値名に関連付けられているデータを取得します。値が存在しない場合は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"
};

context.http インターフェースを使用して組み込みクライアントを介してHTTPS requestsを送信できます。

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());
};

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());
};

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());
};

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());
};

HTTP DELETE の送信 指定されたURLに対するリクエスト。パラメータの定義や戻り値の型などの詳細な参照情報については、 http.delete()を参照してください。

exports = async function() {
const response = await context.http.delete({ url: "https://www.example.com/user/8675309" })
};

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());
};

戻る

関数