Context
이 페이지의 내용
- 앱 메타데이터 가져오기(
context.app
) - 컨텍스트입니다. 앱.id
- 컨텍스트입니다. 앱.clientAppId
- 컨텍스트입니다. 앱.name
- 컨텍스트입니다. 앱.projectId
- 컨텍스트입니다. 앱. 배포서버
- 컨텍스트입니다. 앱.lastDeployed
- 컨텍스트입니다. 앱.hostingUri
- 함수 호출하기(
context.functions
) - context.functions.execute()
- 앱 환경 확인(
context.environment
) - context.environment. 태그를 지정하다
- context.environment.values
- MongoDB 데이터 소스 또는 서드파티 서비스에 연결하기(
context.services
) - context.services.get()
- 요청 메타데이터 가져오기(
context.request
) - context.request
- 사용자 데이터 가져오기(
context.user
) - context.user
- context.runningAsSystem()
- 값(
context.values
) 참조 - context.values.get(valueName)
- HTTP 요청 보내기(
context.http
) - context.http.get()
- context.http.post()
- context.http.put()
- context.http.patch()
- context.http. 삭제()
- 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"
컨텍스트입니다. 앱. 배포서버
앱의 배포 모델과 리전을 설명하는 객체입니다.
{ "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 | 문자열 | 함수의 이름입니다. |
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. 태그를 지정하다
앱의 현재 환경 이름(문자열)입니다.
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
)
context.services
인터페이스를 통해 연결된 MongoDB Atlas 클러스터 또는 연합 데이터 소스의 클라이언트에 액세스할 수 있습니다.
context.services.get()
지정된 서비스에 대한 서비스 클라이언트 또는 undefined
를 가져옵니다(이러한 서비스가 없는 경우).
context.services.get(serviceName)
Parameter | 유형 | 설명 |
---|---|---|
serviceName | 문자열 | 연결된 클러스터, 연합 데이터베이스 인스턴스, 또는 서비스의 이름입니다. 앱에서 생성한 연결된 데이터 소스는 다음 기본 이름 중 하나를 사용합니다.
|
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 인터페이스를 사용하여 수신 요청에 대한 정보를 액세스할 수 있습니다.
팁
context.request
인터페이스에 요청 본문 페이로드가 포함되어 있지 않습니다.
context.request
함수를 실행하게 한 HTTP 요청에 대한 정보를 포함하는 객체입니다.
{ "remoteIPAddress": <string>, "requestHeaders": <object>, "webhookUrl": <string>, "httpMethod": <string>, "rawQueryString": <string>, "httpReferrer": <string>, "httpUserAgent": <string>, "service": <string>, "action": <string> }
필드 | 유형 | 설명 |
---|---|---|
remoteIPAddress | 문자열 | 함수 요청을 발행한 클라이언트의 IP 주소입니다. |
requestHeaders | 객체 | 각 필드 가 함수를 실행하게 한 요청 에 포함된 HTTP 헤더 유형에 매핑되는 객체 입니다. 각 필드 의 값은 각 string 문자열이 요청 에 포함된 지정된 유형의 헤더에 매핑되는 문자열 배열 입니다. |
webhookUrl | 문자열 | 선택 사항. HTTPS endpoint Functions에서 엔드포인트의 경로입니다. |
httpMethod | 문자열 | 선택 사항. HTTPS endpoint Functions에서 HTTP 메서드 는 엔드포인트를 호출한 요청 의 입니다. |
rawQueryString | 문자열 | 들어오는 HTTP 요청에 연결된 쿼리 문자열입니다. 모든 쿼리 매개변수는 지정된 순서 그대로 표시됩니다. 중요! 보안상의 이유로 Atlas 는 키가 |
httpReferrer | 문자열 | 선택 사항. 요청이 전송된 페이지의 URL입니다. 이 값은 HTTP Referer 헤더 에서 파생됩니다. . 요청에 |
httpUserAgent | 문자열 | 선택 사항. 요청의 소스를 식별하는 특성 정보(예: 소프트웨어 공급업체, 운영 체제, 애플리케이션 유형)입니다. 이 값은 HTTP 사용자-에이전트 헤더 에서 파생됩니다. . 요청에 |
다음 context.request
문서 는 macOS High 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 | 문자열 | 사용자를 고유하게 식별하는 ObjectId의 문자열 표현입니다. | ||||||||||||||||
type | 문자열 | 사용자 유형입니다. 다음 유형이 가능합니다.
| ||||||||||||||||
data | 문서 | 사용자를 설명하는 메타데이터가 포함된 문서입니다. 이 필드는 사용자와 연결된 모든 시스템 기능에서 | ||||||||||||||||
custom_data | 문서 | 사용자의 ID 를 지정하는 애플리케이션의 사용자 지정 사용자 데이터 컬렉션 의 문서 입니다. 사용자 지정 사용자 데이터 컬렉션 을 사용하여 애플리케이션 사용자에 대한 임의의 데이터를 저장 수 있습니다. 사용자 지정 사용자 데이터는 MongoDB 문서의 최대 크기인 | ||||||||||||||||
identities | 배열 | 사용자와 연결된 인증 공급자 ID 목록입니다. 사용자가 특정 공급자에 처음 로그인하면 앱 서비스는 사용자를 고유 식별자 및 공급자의 사용자에 대한 추가 메타데이터가 포함된 ID 객체와 연결합니다. 후속 로그인의 경우 App Services는 기존 ID 데이터를 새로 고치지만 새 ID를 만들지 않습니다. ID 객체의 형태는 다음과 같습니다.
|
context.runningAsSystem()
함수가 시스템 사용자 로 실행 경우 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 | 문자열 | 값의 이름입니다. |
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. 삭제()
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()); };