Las funciones Atlas tienen acceso a un objeto global context que contiene metadatos de las solicitudes entrantes y proporciona acceso a los componentes y servicios de tu aplicación.
El objeto context expone las siguientes interfaces:
Propiedad | Descripción |
|---|---|
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 al usuario que inició la solicitud. | |
Contiene valores.globales estáticos |
Obtener metadatos de la aplicación (context.app)
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, }
context.app.id
El ID interno único de la aplicación que contiene la función.
"60c8e59866b0c33d14ee634a"
context.aplicación.clientAppId
El ID único de la aplicación de cliente para la aplicación que contiene la función.
"myapp-abcde"
context.app.name
El nombre de la aplicación que contiene la función.
"myapp"
context.aplicación.projectId
El ID del Proyecto Atlas que contiene la aplicación.
"5e1ec444970199272441a214"
contexto.aplicación.implementación
Un objeto que describe el modelo de implementación de la aplicación y la región.
{ "model": "LOCAL", "providerRegion": "aws-us-east-1" }
contexto.aplicación.últimoImplementado
La fecha y la hora en que la aplicación se implementó por última vez, formateada como una cadena ISODate.
"2022-10-31T12:00:00.000Z"
contexto.aplicación.hostingUri
Si el alojamiento estático está habilitado, este valor es la URL base para los activos alojados. (El alojamiento estático está en desuso. Más información.)
"myapp-abcde.mongodbstitch.com"
Llamar a una función (context.functions)
Puede llamar a cualquier Función en su aplicación a través de la interfaz context.functions.
context.functions.execute()
Llama a una función específica y devuelve el resultado.
context.functions.execute(functionName, ...args)
Parameter | Tipo | Descripción |
|---|---|---|
| string | El nombre de la Función. |
| mixto | Una lista variádica de argumentos para pasar a la función. Cada parámetro de función se asigna a un argumento separado, separado por comas. |
// difference: subtracts b from a using the sum function exports = function(a, b) { return context.functions.execute("sum", a, -1 * b); };
Revisa el entorno de la aplicación (context.environment)
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.
context.environment.etiqueta
El nombre del entorno actual de la aplicación como una 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
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 };
Conecte a una fuente de datos MongoDB o un servicio de terceros (context.services)
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.
context.services.get()
Obtiene un cliente de servicio para el servicio especificado o undefined si no existe tal servicio.
context.services.get(serviceName)
Parameter | Tipo | Descripción |
|---|---|---|
| string | El nombre del clúster vinculado, la instancia federada de base de datos o el servicio. Las fuentes de datos enlazadas creadas por tu aplicación utilizan uno de los siguientes nombres por defecto:
|
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 }, }) };
Obtener metadatos de la solicitud (context.request)
Puedes 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.
context.request
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 |
|---|---|---|
| string | La dirección IP del cliente que emitió la solicitud de la Función. |
| Objeto | Un objeto donde cada campo se asigna a un tipo de Encabezado HTTP que se incluyó en la solicitud que provocó que se ejecutara la función. El valor de cada campo es un arreglo de strings, donde cada string corresponde a un encabezado del tipo especificado que estaba incluido en la solicitud. |
| string | opcional. En las funciones de puntos finales HTTPS, la ruta del punto final. |
| string | opcional. En funciones de endpoints HTTPS, el método HTTP de la solicitud que llamó al endpoint. |
| 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 |
| 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 |
| 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 |
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" ] } }
Obtener datos del usuario (context.user)
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.
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 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | Una representación en string del ObjectId que identifica de forma única al usuario. | ||||||||||||||||
| string | El tipo de usuario. Son posibles los siguientes tipos:
| ||||||||||||||||
| Documento | Un documento que contiene metadatos que describen al usuario. Este campo combina los datos de todos los En las funciones del sistema, el objeto | ||||||||||||||||
| 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 Los datos de usuario personalizados están limitados a | ||||||||||||||||
| arreglo | Una lista de identidades de proveedores de autenticación asociadas con el usuario. Cuando un usuario inicia sesión por primera vez con un proveedor específico, App Services vincula al usuario con un objeto de identidad que contiene un identificador único y metadatos adicionales sobre el usuario provenientes del proveedor. Para 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:
|
context.runningAsSystem()
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. } }
Referenciar un Valor (context.values)
Puedes acceder a los valores estáticos de tu aplicación en una Función con la interfaz context.values.
context.values.get(valueName)
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 |
|---|---|---|
| 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" };
Enviar una solicitud HTTP (context.http)
Puedes enviar HTTPS requests a través de un cliente integrado con la interfaz context.http.
context.http.get()
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()); };
context.http.post()
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()); };
context.http.put()
Envía una solicitud HTTP PUT a la URL especificada. Consulta 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()); };
context.http.patch()
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()); };
context.http.delete ()
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" }) };
context.http.head()
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()); };