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 |
|---|---|
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 |
Obtener los 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"
contexto.app.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.app.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 hora en que se implementó la aplicación 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á obsoleto). 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 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); };
Verifica 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.
contexto.entorno.etiqueta
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" } } };
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 };
Conectarse a una fuente de datos de MongoDB o a 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 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:
|
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 solicitudcontext.request ()
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.
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 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. |
| string | Opcional. En las funciones de punto final 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 de usuariocontext.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.
contexto.usuario
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 | ||||||||||||||||
| 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 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:
|
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. } }
Haz referencia a un valor (context.values)
Puedes acceder a los valores estáticos de tu aplicación en una Función con la interfaz context.values.
contexto.valores.obtener(nombreValor)
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. 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()); };
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()); };
contexto.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()); };