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 |
|---|---|
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. | |
Contiene valores globales estáticos. |
Obtener metadatos de la aplicacióncontext.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, }
contexto.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"
contexto.app.name
El nombre de la aplicación que contiene la función.
"myapp"
contexto.app.proyectoId
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.app.lastDeployed
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.app.hostingUri
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"
Llamar a una función (context.functions)
Puede llamar a cualquier función en su aplicación a través de la context.functions interfaz.
contexto.funciones.ejecutar()
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); };
Comprobar el entorno de la aplicacióncontext.environment ()
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.
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" } } };
contexto.entorno.valores
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.
contexto.servicios.get()
Obtiene un cliente de servicio para el servicio especificado o undefined si no existe dicho 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 vinculadas creadas por su aplicación utilizan uno de los siguientes nombres predeterminados:
|
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 ()
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.
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 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 las funciones de punto final HTTPS, el método HTTP de la solicitud que llamó al punto final. |
| 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 |
| 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 |
| 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 |
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" ] } }
Obtener datos de usuariocontext.user ()
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.
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. Puede usar esta colección para almacenar datos arbitrarios sobre los usuarios de su aplicación. Si establece 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:
|
contexto.runningAsSystem()
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. } }
Hacer referencia a un valorcontext.values ()
Puede acceder a los valores estáticos de su aplicación en una función con la context.values interfaz.
contexto.valores.obtener(nombreValor)
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 |
|---|---|---|
| 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 HTTPcontext.http ()
Puede enviar solicitudes HTTPS 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 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()); };
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. 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()); };
contexto.http.delete()
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" }) };
context.http.head()
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()); };