Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Context

Las funciones de Atlas tienen acceso a una 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

Accede a los metadatos sobre la aplicación que ejecuta la Función.

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

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

Un cliente HTTP incorporado.

Describe la solicitud entrante que activó una llamada Function.

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

Describe el usuario que inició la solicitud.

Contiene valores.globales estáticos

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). Más información.)

"myapp-abcde.mongodbstitch.com"

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

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

Puedes acceder a información sobre la configuración actual del entorno de tu aplicación y 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 tal 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 enlazadas creadas por tu aplicación utilizan uno de los siguientes nombres por defecto:

  • Clúster: mongodb-atlas

  • instancia federada de base de datos: mongodb-datafederation

Leer y guardar 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 },
})
};

Puedes acceder a la 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 la 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 funciones de endpoints HTTPS, el método HTTP de la solicitud que llamó al endpoint.

rawQueryString

string

El string del query adjunto a la solicitud HTTP entrante. Todos los parámetros de la query aparecen en el mismo orden en que se especificaron.

¡Importante! Por razones de seguridad, Atlas elimina automáticamente cualquier par clave-valor de string del query cuando la clave es secret. Por ejemplo, si una solicitud entrante incluye el string del query ?secret=hello&someParam=42, entonces el rawQueryString de esa solicitud es "someParam=42".

httpReferrer

string

opcional. La URL de la página desde la cual se envió la solicitud.

This value is derived from the HTTP Referer header. If the request did not include a Referer header then this is undefined.

httpUserAgent

string

opcional. Información característica que identifica la fuente 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 encabezado User-Agent, entonces esto es undefined.

El siguiente documento context.request refleja una llamada a la 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 la información de la aplicación o del usuario del sistema que invocó una función utilizando 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 ha iniciado sesión a través de un proveedor de autenticación distinto al proveedor de clave API.

"servidor"

El usuario es un proceso de servidor que ha iniciado 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 con el usuario, de modo que los nombres y valores exactos de los campos dependen de con qué proveedores de autenticación 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. Puedes utilizar la colección de datos de usuario personalizados para almacenar datos arbitrarios sobre los usuarios de tu aplicación. Si configura el campo name, App Services rellena el campo de metadatos username con el valor de retorno de name. Los servicios de la aplicación obtienen automáticamente una nueva copia de los datos cada vez que un usuario refresca su token de acceso, como cuando inicia sesión. Los datos subyacentes son un documento común de MongoDB, por lo que puedes utilizar 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, que es el tamaño máximo de un documento de MongoDB. Para evitar alcanzar este límite, considera almacenar datos de usuario pequeños y relativamente estáticos en cada documento de datos de usuario personalizados, como el lenguaje preferido del usuario o la URL de su imagen de avatar. Para datos que son grandes, ilimitados o que se actualizan con frecuencia, considere almacenar solamente 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 hacerlo 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 string generada por el proveedor que identifica de manera única esta identidad.

provider_type

El tipo de proveedor de autenticación asociado a 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.

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

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

Puedes acceder a los valores estáticos de tu aplicación en una Función con la interfaz context.values.

Obtiene los datos asociados con el nombre de Valor proporcionado o undefined si dicho valor no existe. Estos datos pueden ser un valor JSON de texto plano o Secreto expuesto a través de 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"
};

Puedes enviar HTTPS requests 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 publicación a la URL especificada. Consulte http.post() para 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. Consulta http.patch() para obtener información de referencia detallada, incluyendo definiciones de parámetros y 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 borrar a la URL especificada. Consulta http.delete() para obtener información de referencia detallada, incluyendo definiciones de parámetros y 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. Consulta http.head() para obtener información de referencia detallada, incluyendo definiciones de parámetros y 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