Docs Menu
Docs Home
/ /

Context

Las funciones Atlas tienen acceso a un global context objeto que contiene metadatos para las solicitudes entrantes y proporciona acceso a los componentes y servicios de su aplicación.

El objeto context expone las siguientes interfaces:

Propiedad
Descripción

contexto.app

Acceda a metadatos sobre la aplicación que ejecuta la función.

Acceda a los valores del entorno y a la etiqueta del entorno actual.

Un objeto cliente que llama a funcionesde tu aplicación.

Un cliente HTTP integrado.

Describe la solicitud entrante que desencadenó una llamada de función.

Expone objetos cliente que pueden acceder a fuentes de datos y servicios.

Describe el usuario que inició la solicitud.

El objeto context.app contiene metadatos sobre la aplicación que contiene la función.

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

El ID interno único de la aplicación que contiene la función.

"60c8e59866b0c33d14ee634a"

El ID único de la aplicación de cliente para la aplicación que contiene la función.

"myapp-abcde"

El nombre de la aplicación que contiene la función.

"myapp"

El ID del proyecto Atlas que contiene la aplicación.

"5e1ec444970199272441a214"

Un objeto que describe el modelo de implementación de la aplicación y la región.

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

La fecha y hora en que se implementó la aplicación por última vez, formateada como una cadena ISODate.

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

Si el alojamiento estático está habilitado, este valor es la URL base para los activos alojados. (El alojamiento estático está obsoleto). (Aprenda más.)

"myapp-abcde.mongodbstitch.com"

Puede llamar a cualquier función en su aplicación a través de la context.functions interfaz.

Llama a una función específica y devuelve el resultado.

context.functions.execute(functionName, ...args)
Parameter
Tipo
Descripción

functionName

string

El nombre de la Función.

args...

mixto

Una lista variádica de argumentos para pasar a la función. Cada parámetro de la función corresponde a un argumento independiente, separado por comas.

// difference: subtracts b from a using the sum function
exports = function(a, b) {
return context.functions.execute("sum", a, -1 * b);
};

Puede acceder a información sobre la configuración del entorno actual de su aplicación y acceder a valores específicos del entorno a través de la interfaz context.environment.

El nombre del entorno actual de la aplicación como una cadena.

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

Un objeto donde cada campo asigna el nombre de un valor de entorno a su valor en el entorno actual.

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

Puede acceder a un cliente para un clúster MongoDB Atlas vinculado o una fuente de datos federada a través de la interfaz context.services.

Obtiene un cliente de servicio para el servicio especificado o undefined si no existe dicho servicio.

context.services.get(serviceName)
Parameter
Tipo
Descripción

serviceName

string

El nombre del clúster vinculado, la instancia de base de datos federada o el servicio.

Las fuentes de datos vinculadas creadas por su aplicación utilizan uno de los siguientes nombres predeterminados:

  • Clúster: mongodb-atlas

  • instancia de base de datos federada: mongodb-datafederation

Leer y escribir datos en 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 },
})
};

Puede acceder a información sobre la solicitud entrante con la interfaz context.request.

Tip

La interfaz context.request no incluye cargas útiles del cuerpo de la solicitud.

Un objeto que contiene información sobre la solicitud HTTP que provocó la ejecución de la función.

{
"remoteIPAddress": <string>,
"requestHeaders": <object>,
"webhookUrl": <string>,
"httpMethod": <string>,
"rawQueryString": <string>,
"httpReferrer": <string>,
"httpUserAgent": <string>,
"service": <string>,
"action": <string>
}
Campo
Tipo
Descripción

remoteIPAddress

string

La dirección IP del cliente que emitió la solicitud de función.

requestHeaders

Objeto

Un objeto donde cada campo se asigna a un tipo de encabezado HTTP incluido en la solicitud que provocó la ejecución de la función. El valor de cada campo es una matriz de cadenas donde cada cadena se asigna a un encabezado del tipo especificado incluido en la solicitud.

webhookUrl

string

Opcional. En las funciones de punto final HTTPS, la ruta del punto final.

httpMethod

string

Opcional. En las funciones de punto final HTTPS, el método HTTP de la solicitud que llamó al punto final.

rawQueryString

string

La cadena de consulta adjunta a la solicitud HTTP entrante. Todos los parámetros de consulta aparecen en el mismo orden en que se especificaron.

¡Importante! Por razones de seguridad, Atlas elimina automáticamente cualquier par clave-valor de cadena de consulta cuya clave secret sea. Por ejemplo, si una solicitud entrante tiene la cadena de ?secret=hello&someParam=42 consulta, el rawQueryString para esa solicitud "someParam=42" es.

httpReferrer

string

Opcional. La URL de la página desde la que se envió la solicitud.

Este valor se deriva del encabezado HTTP Referer. Si la solicitud no incluyó un Referer encabezado, este undefined será.

httpUserAgent

string

Opcional. Información característica que identifica el origen de la solicitud, como el proveedor de software, el sistema operativo o el tipo de aplicación.

Este valor se deriva del encabezado HTTP User-Agent. Si la solicitud no incluía un User-Agent encabezado, este undefined es.

El siguiente documento context.request refleja una llamada de función emitida desde https://myapp.example.com/ por un usuario que navega con Chrome 73 en 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"
]
}
}

Puede acceder a información sobre la aplicación o el usuario del sistema que llamó a una función con la interfaz context.user.

El objeto de usuario del usuario autenticado que ha llamado a la función.

{
"id": <string>,
"type": <string>,
"data": <document>,
"identities": <array>
}
Campo
Tipo
Descripción

id

string

Una representación en string del ObjectId que identifica de forma única al usuario.

type

string

El tipo de usuario. Son posibles los siguientes tipos:

Tipo
Descripción

"normal"

El usuario es un usuario de la aplicación que inició sesión a través de un proveedor de autenticación distinto del proveedor de la clave API.

"servidor"

El usuario es un proceso de servidor que inicia sesión con cualquier tipo de clave API de App Services.

"sistema"

El usuario es el usuario del sistema que pasa por alto todas las reglas.

data

Documento

Un documento que contiene metadatos que describen al usuario. Este campo combina los datos de todos los identities asociados al usuario, por lo que los nombres y valores exactos de los campos dependen de los proveedores de autenticación con los que se haya autenticado el usuario.

En las funciones del sistema, el user.data objeto está vacío. Use context.runningAsSystem() para comprobar si la función se ejecuta como usuario del sistema.

custom_data

Documento

Un documento de la colección de datos de usuario personalizada de su aplicación que especifica el ID del usuario. Puede usar esta colección para almacenar datos arbitrarios sobre los usuarios de su aplicación. Si establece el campo name, App Services rellena el campo de metadatos username con el valor de retorno name. App Services obtiene automáticamente una nueva copia de los datos cada vez que un usuario actualiza su token de acceso, como al iniciar sesión. Los datos subyacentes son un documento MongoDB normal, por lo que puede usar operaciones CRUD estándar a través del servicio MongoDB Atlas para definir y modificar los datos personalizados del usuario.

Los datos de usuario personalizados están limitados a 16MB, el tamaño máximo de un documento de MongoDB. Para evitar alcanzar este límite, considere almacenar datos de usuario pequeños y relativamente estáticos en cada documento de datos de usuario personalizados, como el idioma preferido del usuario o la URL de su imagen de avatar. Para datos grandes, ilimitados o que se actualizan con frecuencia, considere almacenar solo una referencia a los datos en el documento de usuario personalizado o almacenar los datos con una referencia al ID del usuario en lugar de en el documento de usuario personalizado.

identities

arreglo

Una lista de identidades de proveedores de autenticación asociadas al usuario. Cuando un usuario inicia sesión por primera vez con un proveedor específico, App Services lo asocia con un objeto de identidad que contiene un identificador único y metadatos adicionales del proveedor sobre el usuario. Para los inicios de sesión posteriores, App Services actualiza los datos de identidad existentes, pero no crea una nueva identidad. Los objetos de identidad tienen el siguiente formato:

{
"id": "<Unique ID>",
"provider_type": "<Provider Name>",
"data": {
"<Metadata Field>": <Value>,
...
}
}
Nombre de campo
Descripción

id

Una cadena generada por el proveedor que identifica de forma única esta identidad.

provider_type

El tipo de proveedor de autenticación asociado con esta identidad.

data

Metadatos adicionales del proveedor de autenticación que describen al usuario. Los nombres y valores exactos de los campos variarán según los proveedores de autenticación con los que el usuario haya iniciado sesión.

Se evalúa como un valor booleano que es true si la función se ejecuta como un usuario del sistema.

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

Puede acceder a los valores estáticos de su aplicación en una función con la context.values interfaz.

Obtiene los datos asociados al nombre del valor proporcionado o undefined si no existe dicho valor. Estos datos pueden ser un valor JSON de texto sin formato o un secreto expuesto mediante un valor.

Parameter
Tipo
Descripción

valueName

string

El nombre del 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"
};

Puede enviar solicitudes HTTPS a través de un cliente integrado con la interfaz context.http.

Envía una solicitud HTTP GET a la URL especificada. Ver http.get() para más información de referencia detallada, incluidas definiciones de parámetros y 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());
};

Envía una solicitud HTTP POST a la URL especificada. Consulte http.post() para obtener información de referencia detallada, incluidas las definiciones de parámetros y los 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());
};

Envía una solicitud HTTP PUT a la URL especificada. Consulte http.put() para obtener información de referencia detallada, incluidas las definiciones de parámetros y los 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());
};

Envía una solicitud HTTP PATCH a la URL especificada. Consulte http.patch() para obtener información de referencia detallada, incluidas las definiciones de parámetros y los 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());
};

Envía una solicitud HTTP DELETE a la URL especificada. Consulte http.delete() para obtener información de referencia detallada, incluidas las definiciones de parámetros y los tipos de retorno.

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

Envía una solicitud HTTP HEAD a la URL especificada. Consulte http.head() para obtener información de referencia detallada, incluidas las definiciones de parámetros y los 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());
};

Volver

Funciones