> ## 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.

> Describe el script de acción de base de datos personalizada para cambiar el correo electrónico de un usuario.

# Plantilla del script Change Email

El script Change Email implementa la función definida cuando cambia la dirección de correo electrónico de un usuario o el estado de verificación de esa dirección. Recomendamos llamar a esta función `changeEmail`.

Este script solo se usa en un [escenario de autenticación heredado](/es/docs/authenticate/database-connections/custom-db/overview-custom-db-connections) y es necesario si desea actualizar la dirección de correo electrónico de un usuario (y/o el estado de verificación de su dirección de correo electrónico) en Auth0 y en su base de datos externa en la misma operación.

El script Change Email no se puede configurar desde el <Tooltip tip="Auth0 Dashboard: El producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>. Para administrar este script, debe usar el endpoint [Create a connection](https://auth0.com/docs/api/management/v2#!/Connections/post_connections) o [Update a connection](https://auth0.com/docs/api/management/v2#!/Connections/patch_connections_by_id) de la Auth0 <Tooltip tip="Management API: Un producto que permite a los clientes realizar tareas administrativas." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip>, o [Auth0 Deploy CLI](/es/docs/deploy-monitor/deploy-cli-tool).

<Warning>
  Si administra los scripts de acción de base de datos de una conexión de base de datos personalizada desde el Auth0 Dashboard, el script Change Email se eliminará automáticamente al guardar.

  Para evitar que el script Change Email se elimine accidentalmente, use la Auth0 Management API o Auth0 Deploy CLI al administrar la conexión.

  Si cambia manualmente el correo electrónico de un usuario en su base de datos personalizada, debe actualizar el usuario por separado; Auth0 no detectará automáticamente el cambio.
</Warning>

<div id="changeemail-function">
  ## Función ChangeEmail
</div>

La función changeEmail debe:

* Actualizar la dirección de correo electrónico del usuario en la base de datos externa.
* Devolver un error si la operación falla o si se produce algún error.

<div id="definition">
  ### Definición
</div>

La función `changeEmail` recibe cuatro parámetros y devuelve una función `callback`:

```js lines theme={null}
changeEmail(email, newEmail, verified, callback): function
```

| Parámetro  | Tipo     | Descripción                                                                                                     |
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `email`    | String   | Dirección de correo electrónico actual del usuario.                                                             |
| `newEmail` | String   | Valor que se establecerá como la nueva dirección de correo electrónico del usuario en la base de datos externa. |
| `verified` | Boolean  | Estado de verificación de la nueva dirección de correo electrónico.                                             |
| `callback` | Function | Se usa para pasar datos de error a través del flujo.                                                            |

<div id="example">
  ### Ejemplo
</div>

Este es un ejemplo en seudojavaScript de cómo podría implementar la función `changeEmail`:

```javascript lines expandable theme={null}
function (email, newEmail, verified, callback) {
  // Preparar la llamada a la API
  let options = {
    url: "https://example.com/api/users",
    action: "PATCH",
    body: {
      email: email,
      new_email: newEmail,
      email_verified: verified
    }
  };

  // Llamar a la API
  send(options, err => {
    // Devolver el valor `false` en el callback si la operación falló
    if (err && err.id == "FAIL_CHANGE_EMAIL") {
      return callback(null, false);
    } else if (err) {
      // Devolver error en el callback si ocurrió un error no especificado
      return callback(new Error("My custom error message."));
    }

    // Devolver el valor `true` en el callback si la operación se realizó correctamente
    return callback(null, true);
  });
}
```

<div id="callback-function">
  ## Función callback
</div>

La función `callback` acepta dos parámetros y devuelve una función.

<div id="definition">
  ### Definición
</div>

```js lines theme={null}
callback(error, operationResult): function
```

| Parámetro         | Tipo    | Obligatorio | Descripción                                                          |
| ----------------- | ------- | ----------- | -------------------------------------------------------------------- |
| `error`           | Object  | Obligatorio | Contiene los datos del error.                                        |
| `operationResult` | Boolean | Opcional    | Indica el resultado de la operación de cambio de correo electrónico. |

<div id="return-a-success">
  ### Devuelve un resultado correcto
</div>

Si la operación de cambio de correo electrónico se realizó correctamente, devuelve la función `callback` y pasa un valor `null` como parámetro `error` y un valor `true` como parámetro `operationResult`:

```js lines theme={null}
return callback(null, true);
```

<div id="return-a-failure">
  ### Devolver un error
</div>

Si se produce un error en la operación de cambio de correo electrónico, devuelve la función `callback` y pasa `null` como valor del parámetro `error` y `false` como valor del parámetro `operationResult`:

```js lines theme={null}
return callback(null, false);
```

<div id="return-a-failure">
  ### Devolver un error
</div>

Si se produjo un error, devuelva la función `callback` y pase la información relevante del error en el parámetro `error`:

```js lines theme={null}
return callback(new Error("My custom error message."));
```

<div id="learn-more">
  ## Más información
</div>

* [Plantillas de scripts para cambiar la contraseña](/es/docs/authenticate/database-connections/custom-db/templates/change-password)
* [Plantillas de scripts para crear usuarios](/es/docs/authenticate/database-connections/custom-db/templates/create)
* [Plantillas de scripts para eliminar usuarios](/es/docs/authenticate/database-connections/custom-db/templates/delete)
* [Plantillas de scripts para obtener usuarios](/es/docs/authenticate/database-connections/custom-db/templates/get-user)
* [Plantillas de scripts de inicio de sesión](/es/docs/authenticate/database-connections/custom-db/templates/login)
* [Plantillas de scripts de verificación](/es/docs/authenticate/database-connections/custom-db/templates/verify)
