Contexto
Nesta página
- Obter metadados do app (
context.app
) - context.app.id
- context.app.clientAppId
- context.app.name
- context.app.projectId
- context.app.deployment
- context.app.lastDeployed
- context.app.hostingUri
- Chamar uma função (
context.functions
) - context.functions.execute()
- Verificar o ambiente do aplicativo (
context.environment
) - context.environment.tag
- context.environment.values
- Conecte-se a uma fonte de dados MongoDB ou serviço de terceiros (
context.services
) - context.services.get()
- Obter metadados da solicitação (
context.request
) - context.request
- Obter dados do usuário (
context.user
) - context.user
- context.runningAsSystem()
- Referenciar um valor (
context.values
) - context.values.get(valueName)
- Enviar uma solicitação HTTP (
context.http
) - context.http.get()
- context.http.post()
- context.http.put()
- context.http.patch()
- context.http.delete()
- context.http.head()
As Atlas Functions têm acesso a um objeto global do context
que contém metadados para as solicitações de entrada e fornece acesso a componentes e serviços em seu aplicativo.
O objeto context
expõe as seguintes interfaces:
Propriedade | Descrição |
---|---|
Acesse metadados sobre o aplicativo que executa a função. | |
Acesse valores ambientais e a tag de ambiente atual. | |
Um objeto de cliente que chama asfunções do seu aplicativo. | |
Um cliente HTTP integrado. | |
Descreve a solicitação recebida que acionou uma chamada de função. | |
Expõe objetos de cliente que podem acessar fontes de dados e serviços. | |
Descreve o usuário que iniciou a solicitação. | |
Contém valoresglobais estáticos. |
Obter metadados do app (context.app
)
O objeto context.app
contém metadados sobre o aplicativo que contém a função.
{ "id": string, "clientAppId": string, "name": string, "projectId": string, "deployment": { "model": string, "providerRegion": string, }, "lastDeployed": string, "hostingUri": string, }
context.app.id
O ID interno exclusivo do aplicativo que contém a função.
"60c8e59866b0c33d14ee634a"
context.app.clientAppId
O ID exclusivo do aplicativo do cliente para o aplicativo que contém a função.
"myapp-abcde"
context.app.name
O nome da aplicação que contém a função.
"myapp"
context.app.projectId
O ID do Projeto Atlas que contém o aplicativo.
"5e1ec444970199272441a214"
context.app.deployment
Um objeto que descreve o modelo e região de implantação do aplicativo.
{ "model": "LOCAL", "providerRegion": "aws-us-east-1" }
context.app.lastDeployed
A data e a hora em que o aplicativo foi implantado pela última vez, formatadas como uma string ISODate .
"2022-10-31T12:00:00.000Z"
context.app.hostingUri
Se o hospedagem estática estiver habilitado, esse valor será a URL base dos ativos hospedados. (A hospedagem estática está obsoleta. Saiba mais.)
"myapp-abcde.mongodbstitch.com"
Chamar uma função (context.functions
)
Você pode chamar qualquer função em seu aplicativo através da interface do context.functions
.
context.functions.execute()
Chama uma função específica e retorna o resultado.
context.functions.execute(functionName, ...args)
Parâmetro | Tipo | Descrição |
---|---|---|
functionName | string | O nome da função. |
args ... | misto | Uma lista variada de argumentos para passar para a função. Cada
parâmetro de função é mapeado para um argumento independente
separado por vírgula. |
// difference: subtracts b from a using the sum function exports = function(a, b) { return context.functions.execute("sum", a, -1 * b); };
Verifique o ambiente do aplicativo (context.environment
)
Você pode acessar informações sobre a configuração atual do ambiente da sua aplicação e acessar valores específicos do ambiente por meio da interface context.environment
.
context.environment.tag
O nome do ambiente atual do aplicativo como uma 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
Um objeto onde cada campo mapeia o nome de um valor de ambiente para seu valor no ambiente atual.
exports = async function() { const baseUrl = context.environment.values.baseUrl };
Conecte-se a uma fonte de dados MongoDB ou serviço de terceiros (context.services
)
Você pode acessar um cliente para um cluster MongoDB Atlas vinculado ou fonte de dados federada por meio da interface context.services
.
context.services.get()
Obtém um cliente de serviço para o serviço especificado ou undefined
se não existir tal serviço.
context.services.get(serviceName)
Parâmetro | Tipo | Descrição |
---|---|---|
serviceName | string | O nome do cluster vinculado, instância do banco de dados federado ou serviço. As fontes de dados vinculadas criadas pelo seu aplicativo usam um dos seguintes nomes padrão:
|
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 }, }) };
Obter metadados da solicitação (context.request
)
Você pode acessar informações sobre a solicitação de entrada com a interface context.request.
Dica
A interface context.request
não inclui cargas úteis do corpo da solicitação.
context.request
Um objeto que contém informações sobre a requisição HTTP que causou a execução da função.
{ "remoteIPAddress": <string>, "requestHeaders": <object>, "webhookUrl": <string>, "httpMethod": <string>, "rawQueryString": <string>, "httpReferrer": <string>, "httpUserAgent": <string>, "service": <string>, "action": <string> }
Campo | Tipo | Descrição |
---|---|---|
remoteIPAddress | string | O endereço IP do cliente que emitiu a solicitação de função. |
requestHeaders | objeto | Um objeto onde cada campo mapeia para um tipo de Cabeçalho HTTP que foi incluído na solicitação que fez com que a função fosse executada. O valor de cada campo é uma matriz de cadeias de caracteres em que cada cadeia de caracteres string mapeia para um cabeçalho do tipo especificado que foi incluído na solicitação. |
webhookUrl | string | Opcional. Em Funções de ponto de conexão HTTPS, a rota do ponto de conexão. |
httpMethod | string | Opcional. Nas funções de endpoint HTTPS, o método HTTP da solicitação que chamou o endpoint. |
rawQueryString | string | A string da query anexada à solicitação HTTP de entrada. Todos os parâmetros de query aparecem na mesma ordem em que foram especificados. Importante! Por motivos de segurança, o Atlas remove automaticamente qualquer string de query da chave/par de valor em que a chave for |
httpReferrer | string | Opcional. O URL da página da qual a solicitação foi enviada. Este valor é derivado do Cabeçalho HTTP. Se a solicitação não incluiu um cabeçalho |
httpUserAgent | string | Opcional. Informações características que identificam a origem da solicitação, como o fornecedor do software, o sistema operacional ou o tipo de aplicativo. Esse valor é derivado do header HTTP usuário-agente. Se a solicitação não incluiu um cabeçalho |
O seguinte documento context.request
reflete uma chamada de função emitida de https://myapp.example.com/
por um usuário navegando com o Chrome 73 no macOS High Sierra:
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" ] } }
Obter dados do usuário (context.user
)
Você pode acessar informações sobre o aplicativo ou usuário do sistema que chamou uma função com a interface context.user
.
context.user
O objeto do usuário do usuário autenticado que chamou a função.
{ "id": <string>, "type": <string>, "data": <document>, "identities": <array> }
Campo | Tipo | Descrição | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | Uma representação de string do ObjectId que identifica exclusivamente o usuário. | ||||||||||||||||
type | string | O tipo do usuário. Os seguintes tipos são possíveis:
| ||||||||||||||||
data | documento | Um documento que contém metadados que descrevem o usuário. Esse campo combina os dados de todos os Em funções do sistema, o objeto | ||||||||||||||||
custom_data | documento | Um documento da coleção de dados personalizados do usuário do seu aplicativo que especifica o ID do usuário. Você pode usar a coleção de dados personalizados do usuário para armazenar dados arbitrários sobre os usuários do seu aplicativo. Se você definir o campo O usuário de dados personalizado é limitado a | ||||||||||||||||
identities | array | Uma lista de identidades do fornecedor de autenticação associadas ao usuário. Quando um usuário se conecta pela primeira vez com um provedor específico, o App Services associa o usuário a um objeto de identidade que contém um identificador exclusivo e metadados adicionais sobre o usuário do fornecedor. Para logins subsequentes, o App Services atualiza os dados de identidade existentes, mas não cria uma nova identidade. Os objetos de identidade têm o seguinte formulário:
|
context.runningAsSystem()
Avalia um booleano que é true
se a função estiver sendo executada como um usuário do sistema.
exports = function() { const isSystemUser = context.runningAsSystem() if(isSystemUser) { // Do some work with the system user. } else { // Fail. } }
Referenciar um valor (context.values
)
Você pode acessar os valores estáticos do seu aplicativo em uma função com a interface do context.values
.
context.values.get(valueName)
Obtém os dados associados ao nome do valor fornecido ou undefined
se não existir tal valor. Esses dados são um valor JSON de texto sem formatação ou um segredo exposto por meio de um valor.
Parâmetro | Tipo | Descrição |
---|---|---|
valueName | string | O nome do valor. |
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" };
Enviar uma solicitação HTTP (context.http
)
Você pode enviar solicitações HTTPS por meio de um cliente integrado com a interface context.http
.
context.http.get()
Envia um GET HTTP solicitação para a URL especificada. Consulte http.get()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
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()
Envia um POST HTTP solicitação para a URL especificada. Consulte http.post()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
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()
Envia um HTTP PUT solicitação para a URL especificada. Consulte http.put()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
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()
Envia um PATCH HTTP solicitação para a URL especificada. Consulte http.patch()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
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()
Envia um HTTP DELETE solicitação para a URL especificada. Consulte http.delete()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
exports = async function() { const response = await context.http.delete({ url: "https://www.example.com/user/8675309" }) };
context.http.head()
Envia um HEAD HTTP solicitação para a URL especificada. Consulte http.head()
para informações de referência detalhadas, incluindo definições de parâmetros e tipos de retorno.
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()); };