Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

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 객체는 다음과 같은 인터페이스를 노출합니다.

속성
설명
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
문자열
함수의 이름입니다.
args...
혼합
함수에 전달할 가변인자의 목록입니다. 각 함수의 매개변수는 쉼표로 구분된 별도 인자에 매핑됩니다.
// difference: subtracts b from a using the sum function
exports = function(a, b) {
return context.functions.execute("sum", a, -1 * b);
};

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"
}
}
};

각 필드가 환경 값의 이름을 현재 환경의 해당 값에 매핑하는 객체입니다.

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

context.services 인터페이스를 통해 연결된 MongoDB Atlas 클러스터 또는 연합 데이터 소스의 클라이언트에 액세스할 수 있습니다.

지정된 서비스에 대한 서비스 클라이언트 또는 undefined를 가져옵니다(이러한 서비스가 없는 경우).

context.services.get(serviceName)
Parameter
유형
설명
serviceName
문자열

연결된 클러스터, 연합 데이터베이스 인스턴스, 또는 서비스의 이름입니다.

앱에서 생성한 연결된 데이터 소스는 다음 기본 이름 중 하나를 사용합니다.

  • 클러스터: 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 인터페이스를 사용하여 수신 요청에 대한 정보를 액세스할 수 있습니다.

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 Header 유형에 매핑되는 객체 입니다. 이는 함수를 실행하게 한 요청 에 포함되었습니다. 각 필드 의 값은 각 문자열이 요청 에 포함된 지정된 유형의 헤더에 매핑되는 문자열 배열 입니다.
webhookUrl
문자열
선택 사항. HTTPS endpoint Functions에서 엔드포인트의 경로입니다.
httpMethod
문자열
선택 사항. HTTPS endpoint Functions에서 HTTP 메서드 는 엔드포인트를 호출한 요청 의 입니다.
rawQueryString
문자열

들어오는 HTTP 요청에 연결된 쿼리 문자열입니다. 모든 쿼리 매개변수는 지정된 순서 그대로 표시됩니다.

중요! 보안상의 이유로 Atlas 는 키가 secret인 쿼리 string 키/값 쌍을 자동으로 제거합니다. 예를 예시 수신 요청 에 쿼리 string ?secret=hello&someParam=42 이(가) 있는 경우 해당 요청 의 rawQueryString"someParam=42"입니다.

httpReferrer
문자열

선택 사항. 요청이 전송된 페이지의 URL입니다.

이 값은 HTTP Referer 헤더 에서 파생됩니다. . 요청에 Referer 헤더가 포함되지 않은 경우 이는 undefined 입니다.

httpUserAgent
문자열

선택 사항. 요청의 소스를 식별하는 특성 정보(예: 소프트웨어 공급업체, 운영 체제, 애플리케이션 유형)입니다.

이 값은 HTTP 사용자-에이전트 헤더 에서 파생됩니다. . 요청에 User-Agent 헤더가 포함되지 않은 경우 이는 undefined 입니다.

다음 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 인터페이스를 사용하여 함수를 호출한 애플리케이션 또는 시스템 사용자에 대한 정보에 액세스할 수 있습니다.

함수를 호출한 인증된 사용자의 사용자 객체 입니다.

{
"id": <string>,
"type": <string>,
"data": <document>,
"identities": <array>
}
필드
유형
설명
id
문자열
사용자를 고유하게 식별하는 ObjectId의 문자열 표현입니다.
type
문자열

사용자 유형입니다. 다음 유형이 가능합니다.

유형
설명
'정상'
사용자는 API 키 공급자가 아닌 인증 공급자를 통해 로그인한 애플리케이션 사용자 입니다.
'서버'
사용자는 모든 유형의 App Services API 키로 로그인된 서버 프로세스입니다.
'시스템'
사용자는 모든 규칙을 우회하는 시스템 사용자 입니다.
data
문서

사용자를 설명하는 메타데이터가 포함된 문서입니다. 이 필드는 사용자와 연결된 모든 identities의 데이터를 결합하므로 정확한 필드 이름과 값은 사용자가 인증한 인증 공급자에 따라 달라집니다.

시스템 기능에서 user.data 객체 는 비어 있습니다. context.runningAsSystem() 을 사용하여 함수가 시스템 사용자 로 실행 있는지 테스트합니다.

custom_data
문서

사용자의 ID 를 지정하는 애플리케이션의 사용자 지정 사용자 데이터 컬렉션 의 문서 입니다. 사용자 지정 사용자 데이터 컬렉션 을 사용하여 애플리케이션 사용자에 대한 임의의 데이터를 저장 수 있습니다. name 필드 를 설정하다 하면 App Services 는 username 메타데이터 필드 를 name 반환 값으로 채웁니다. App Services 는 사용자가 로그인 할 때와 같이 액세스 토큰을 새로 고칠 때마다 자동으로 데이터의 새 복사본을 가져옵니다. 기본 데이터는 일반 MongoDB 문서 이므로 MongoDB Atlas 서비스를 통해 표준 CRUD 작업을 사용하여 사용자의 사용자 지정 데이터를 정의하고 수정할 수 있습니다.

사용자 지정 사용자 데이터는 MongoDB 문서의 최대 크기인 16MB(으)로 제한됩니다. 이 제한에 도달하지 않으려면 사용자가 선호하는 언어나 아바타 이미지의 URL과 같은 작고 상대적으로 정적인 사용자 데이터를 각 사용자 지정 사용자 데이터 문서에 저장하는 것이 좋습니다. 용량이 크거나, 제한이 없거나, 자주 업데이트되는 데이터의 경우 사용자 지정 사용자 문서에 데이터에 대한 참조만 저장하거나 사용자 지정 사용자 문서가 아닌 사용자의 ID에 대한 참조와 함께 데이터를 저장하는 것을 고려합니다.

identities
배열

사용자와 연결된 인증 공급자 ID 목록입니다. 사용자가 특정 공급자에 처음 로그인하면 앱 서비스는 사용자를 고유 식별자 및 공급자의 사용자에 대한 추가 메타데이터가 포함된 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
문자열
값의 이름입니다.
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());
};

돌아가기

함수