Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / /

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
context.app
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.

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,
}

O ID interno exclusivo do aplicativo que contém a função.

"60c8e59866b0c33d14ee634a"

O ID exclusivo do aplicativo do cliente para o aplicativo que contém a função.

"myapp-abcde"

O nome da aplicação que contém a função.

"myapp"

O ID do Projeto Atlas que contém o aplicativo.

"5e1ec444970199272441a214"

Um objeto que descreve o modelo e região de implantação do aplicativo.

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

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"

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"

Você pode chamar qualquer função em seu aplicativo através da interface do context.functions.

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

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 .

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

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

Você pode acessar um cliente para um cluster MongoDB Atlas vinculado ou fonte de dados federada por meio da interface context.services.

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:

  • Cluster: mongodb-atlas

  • Instância do banco de dados federado: mongodb-datafederation

Ler e gravar dados no 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 },
})
};

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.

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 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 de 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 secret. Por exemplo, se uma solicitação recebida tiver a string de query ?secret=hello&someParam=42 , o rawQueryString para essa solicitação será "someParam=42".

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 Referer , então é undefined.

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 User-Agent , então é undefined.

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

Você pode acessar informações sobre o aplicativo ou usuário do sistema que chamou uma função com a interface 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:

Tipo
Descrição
"normal"
O usuário é um usuário de aplicativo conectado por meio de um provedor de autenticação que não seja o provedor de chave de API.
"servidor"
O usuário é um processo de servidor conectado com qualquer tipo de chave API do App Services.
"sistema"
O usuário é o usuário do sistema que ignora todas as regras.
data
documento

Um documento que contém metadados que descrevem o usuário. Esse campo combina os dados de todos os identities associados ao usuário, portanto, os nomes e valores exatos dos campos dependem de quais provedores de autenticação o usuário autenticou.

Em funções do sistema, o objeto user.data está vazio. Use context.runningAsSystem() para testar se a função está sendo executada como um usuário do sistema.

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 name , o App Services preencherá o campo de metadados username com o valor de retorno de name. O App Services busca automaticamente uma nova cópia dos dados sempre que um usuário atualiza seu token de acesso, como quando ele faz login. Os dados subjacentes são um documento normal do MongoDB , portanto, você pode usar operações CRUD padrão por meio do Serviço MongoDB Atlas para definir e modificar os dados personalizados do usuário.

O usuário de dados personalizado é limitado a 16MB, o tamanho máximo de um documento do MongoDB. Para evitar atingir esse limite, considere armazenando dados de usuário pequenos e relativamente estáticos em cada personalizado documento de dados do usuário, como o idioma preferido do usuário ou a URL da imagem do avatar. Para dados que são grandes, ilimitado ou atualizado com frequência, considere armazenar apenas um referência aos dados no documento do usuário personalizado ou no armazenamento os dados com uma referência ao ID do usuário em vez de no Documento de usuário personalizado.

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:

{
"id": "<Unique ID>",
"provider_type": "<Provider Name>",
"data": {
"<Metadata Field>": <Value>,
...
}
}
Nome do campo
Descrição
id
Uma string gerada pelo fornecedor que identifica exclusivamente essa identidade.
provider_type
O tipo de fornecedor de autenticação associado a esta identidade.
data
Metadados adicionais do fornecedor de autenticação que descrevem o usuário. Os nomes e valores exatos dos campos variarão dependendo de quais fornecedores de autenticação o usuário usou para se conectar.

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.
}
}

Você pode acessar os valores estáticos do seu aplicativo em uma função com a interface do context.values.

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

Você pode enviar solicitações HTTPS por meio de um cliente integrado com a interface context.http.

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

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

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

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

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

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

Voltar

Funções