Eventos

Un evento ocurre en un servidor siempre que la IU o las secuencias de comandos del lado del cliente de la app acceden o modifican los datos. Las secuencias de comandos del lado del servidor no activan eventos, incluso cuando se cargan o se guardan registros. Estos son eventos de datos, no eventos de widget.

Los eventos activan verificaciones de permisos y pueden ejecutar secuencias de comandos del lado del servidor.

Las solicitudes o modificaciones a registros múltiples activan un evento por cada registro afectado. Por ejemplo, el evento onAfterLoad se activa por cada registro que se muestre al cliente.

Tipos de eventos

Nombre Descripción
onAfterLoad Un evento que ocurre antes de que el servidor muestre un registro.
onBeforeCreate Un evento que ocurre después de que el cliente crea un registro, pero antes de que se guarde en la base de datos.
onAfterCreate Un evento que ocurre después de que el cliente crea un registro y que el servidor lo guarda en la base de datos, pero antes de que el cliente cargue el cambio.
onBeforeSave Un evento que ocurre después de que el cliente aplica cambios en un registro, pero antes de que se guarde en la base de datos.
onAfterSave Un evento que ocurre después de que el cliente realiza un cambio y que los servidores lo guardan en la base de datos, pero antes de que el cliente cargue el cambio.
onBeforeDelete Un evento que ocurre después de que el cliente solicita la eliminación de un registro, pero antes de que se borre en la base de datos.
onAfterDelete Un evento que ocurre después de que el cliente solicita al servidor que borre un registro de la base de datos, pero antes de que el cliente cargue la eliminación.

Eventos y excepciones

Cuando ocurre un evento, App Maker verifica los permisos de relación y modelo relevantes y ejecuta la secuencia de comandos del evento, si escribiste una. Si la verificación de permisos falla o la secuencia de comandos arroja una excepción, App Maker cancela el evento y le muestra un error al cliente. La cancelación de un evento onAfterLoad evita que el servidor muestre un registro. La cancelación de otros eventos evita modificaciones en la base de datos.

Secuencias de comandos del evento

Agrega las secuencias de comandos del evento a la pestaña Eventos del editor de modelos. Las secuencias de comandos del evento tienen acceso a la variable record, que representa el registro que activó el evento.

Ten cuidado cuando invocas operaciones costosas en secuencia de comandos de eventos, como ejecutar consultas o guardar registros. Varias acciones de clientes operan en varios registros al mismo momento, por lo que es probable que la secuencia de comandos se ejecute más de una vez. Prueba almacenar en caché para mejorar el rendimiento del código.

Aquí puedes encontrar algunos ejemplos de cómo usar las secuencias de comandos de evento para tipos de eventos diferentes:

Ejemplo onAfterLoad

Puedes usar eventos onAfterLoad para hacer un seguimiento de quién accede a un registro. En este ejemplo, se hace un seguimiento de la última persona que vio el registro:

var userEmail = Session.getActiveUser().getEmail();
record.LastVisitor = userEmail;
app.saveRecords([record]);

Ejemplo onBeforeCreate

Puedes usar eventos onBeforeCreate para inicializar registros con valores calculados en el servidor. En este ejemplo, se inicializa un registro nuevo con la fecha de creación:

 record.TimeCreated = new Date();

Ejemplo onAfterCreate

Puedes usar eventos onAfterCreate para realizar acciones después de guardar un registro nuevo en la base de datos. En este ejemplo, se envía un mensaje de correo electrónico con detalles del registro nuevo.

var body = 'record: { key:' + record._key + ',name:' + record.name + '}';
console.log('record key is ' + record._key);
sendEmail('anndroyd@mixateria.org', 'OnAfterCreate', body);

Ejemplo onBeforeSave

Puedes usar eventos onBeforeSave para validar el estado en el registro o hacer un seguimiento de cuándo se modificó por última vez. En este ejemplo, se arroja una excepción si dos valores de campo de registro son iguales:

if (record.ValueOne === record.ValueTwo) {
  throw new Error("valueOne and valueTwo can't be equal");
}

Ejemplo onAfterSave

Puedes usar eventos onAfterSave para realizar acciones después de que se cambia un registro existente. En este ejemplo, se envía un mensaje de correo electrónico cuando la app actualiza un registro existente.

console.log("This is a new name: " + record.name);
sendEmail('anndroyd@mixateria.org', 'onAfterSave', record.name);

Ejemplo onBeforeDelete

Puedes usar eventos onBeforeDelete para almacenar una copia de seguridad del registro en otro registro de un modelo diferente:

var backupRecord = app.models.BackupRecords.newRecord();
backupRecord.Name = record.Name;
app.saveRecords([backupRecord]);

Ejemplo onAfterDelete

Puedes usar eventos onAfterDelete para realizar acciones después de que se borra un registro. En este ejemplo, se registra un evento en la consola por un largo tiempo cuando la app borra un registro.

console.log("the deleted record name is " + record.name);
var rec = app.models.ArchivedEmp.newRecord();
rec.name = record.name;
app.saveRecords([rec]);
console.log("SAVED");