> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Obtén información sobre las plantillas de scripts de Action para bases de datos personalizadas.

# Plantillas de scripts de Action para bases de datos personalizadas

<Card title="La disponibilidad varía según el plan de Auth0">
  Tu plan de Auth0 o tu acuerdo personalizado determina si esta función está disponible. Para obtener más información, consulta [Precios](https://auth0.com/pricing).
</Card>

Si tienes tu propia base de datos (conocida en Auth0 como un almacén de datos heredado) que contiene datos de identidad de usuario, puedes usarla como <Tooltip tip="Proveedor de identidad (IdP): servicio que almacena y gestiona identidades digitales." cta="Ver glosario" href="/es/docs/glossary?term=identity+provider">proveedor de identidad</Tooltip> para autenticar usuarios.
La conexión a tu almacén de datos heredado se crea y configura como una base de datos personalizada en Auth0. Puedes optar por migrar datos desde tu base de datos heredada al almacén de datos de Auth0 de forma incremental con el tiempo, o seguir usándola sin migrar datos. Proporcionamos plantillas de scripts para realizar funciones en la base de datos personalizada que puedes usar y personalizar.

Hay dos tipos distintos de scripts de base de datos personalizada:

* **Migración automática**: Cada vez que un usuario inicia sesión en Auth0, si ese usuario aún no está en Auth0, el script comprobará la base de datos heredada para ver si existe allí. Si se encuentra y el indicador **Importar usuarios a Auth0** está activado, los datos de usuario se migran al almacén de datos de Auth0. A esta capacidad a veces se la denomina **migración gradual** o **migración diferida**.
* **Base de datos heredada**: Auth0 siempre consultará la base de datos subyacente cuando un usuario intente iniciar sesión, se cree, cambie su contraseña, verifique su correo electrónico o se elimine. Si se encuentra y el indicador **Importar usuarios a Auth0** **no** está activado, los datos de usuario permanecen en la base de datos heredada y **no** se migran a Auth0.

Auth0 proporciona los siguientes scripts de Action para bases de datos personalizadas:

* [Cambiar contraseña](/es/docs/authenticate/database-connections/custom-db/templates/change-password)
* [Crear usuario](/es/docs/authenticate/database-connections/custom-db/templates/create)
* [Eliminar usuario](/es/docs/authenticate/database-connections/custom-db/templates/delete)
* [Obtener usuario](/es/docs/authenticate/database-connections/custom-db/templates/get-user)
* [Login](/es/docs/authenticate/database-connections/custom-db/templates/login)
* [Verificar usuario](/es/docs/authenticate/database-connections/custom-db/templates/verify)
* [Cambiar correo electrónico](/es/docs/authenticate/database-connections/custom-db/templates/change-email)

<Card title="Firewall de red">
  Si estás detrás de un firewall, es posible que esta función requiera que agregues las direcciones IP adecuadas de Auth0 a la lista de permitidos para que funcione correctamente.
</Card>

<div id="script-execution">
  ## Ejecución de scripts
</div>

Como se describe en [Custom Database Connections](/es/docs/authenticate/database-connections/custom-db), un tipo de conexión de base de datos personalizada le permite configurar scripts de Action: código personalizado que se utiliza al interactuar con su sistema de identidades heredado. Cada script de Action no es más que una función de JavaScript con un nombre al que se le pasan varios parámetros; tanto el nombre de la función como los parámetros que se pasan dependen del script.

<div id="limits">
  ### Límites
</div>

La ejecución del script de Action admite la naturaleza asíncrona de JavaScript, y se pueden usar construcciones como los objetos [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). El procesamiento asíncrono implica, en la práctica, una suspensión hasta que se complete una operación, y un contenedor Webtask sin servidor de Auth0 suele tener un límite de ejecución de 20 segundos, tras el cual puede reciclarse. Si un contenedor se recicla debido a este límite, la operación finalizará prematuramente, lo que en última instancia hará que se devuelva un error (además de poder provocar un posible restablecimiento del objeto `global`).

<div id="completion-and-the-callback-function">
  ### Finalización y la función `callback`
</div>

La función `callback` proporcionada a cada script de Action actúa, en la práctica, como una señal para indicar que la operación ha finalizado. Un script de Action debe finalizar inmediatamente después de llamar a la función `callback` (ya sea de forma implícita o mediante la ejecución explícita de una instrucción JavaScript `return`) y no debe realizar ninguna otra operación.

<Warning>
  La función `callback` proporcionada por Auth0 debe llamarse exactamente **una** vez; llamar a la función más de una vez dentro de un script de Action dará lugar a resultados impredecibles o errores.
</Warning>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Cuando `callback` se ejecuta sin parámetros, como en `callback()`, esto implica que la función se ha llamado como si se hubiera ejecutado `callback(null)`.
</Callout>

Si un script de Action usa procesamiento asíncrono, la llamada a la función `callback` debe posponerse hasta que dicho procesamiento finalice y debe ser la última llamada que se realice. La ejecución asíncrona hará que un `callback` de JavaScript se ejecute una vez completada la operación asíncrona; este callback suele activarse en algún momento después de que finaliza el cuerpo principal (sincrónico) de una función JavaScript.

<Warning>
  No ejecutar la función `callback` provocará que la ejecución se quede bloqueada y, en última instancia, que se devuelva un error. El script de Action debe llamar a la función `callback` exactamente una vez: la función `callback` debe llamarse al menos una vez para evitar que la ejecución se bloquee; sin embargo, no debe llamarse más de una vez, de lo contrario se producirán resultados impredecibles o errores.
</Warning>
