ForgeDocumentación
es

Documentación

Opciones de NEWACTION y objeto de la acción

Total.js 5 · total5@0.0.19 referenceactionsvalidation Ejecutada con Total.js 5

NEWACTION(name, options) declara una acción. name es su id (Users/insert): las rutas la usan con --> *Users/insert y tu código con ACTION('Users/insert', payload).

Opciones

OpciónValorQué hace
nametextoUna descripción de la acción; también está disponible como $.name.
actionfunction($, model)El código de la acción. model es la entrada validada.
inputtextoLos campos del cuerpo, como name:Type separados por comas; un * antes del nombre lo hace obligatorio. Consulta la página de tipos de entrada.
outputtextoLos campos de la respuesta; los campos que no se listan se eliminan.
paramstextoLos segmentos {name} de la ruta, validados como input.
querytextoLa cadena de consulta, validada como input.
partialtrueSolo los campos que se enviaron llegan a la acción. Úsalo para PATCH.
usertrue o falsetrue responde 401 cuando no hay un usuario autenticado; false acepta solo peticiones anónimas.
permissionstexto o array'read,write': el usuario necesita uno de ellos (o ser superadministrador).
routetextoDeclara aquí la ruta de la acción: 'GET /products/', o true para una ruta API.
middlewaretextoNombres de middleware que se ejecutan antes de la acción, separados por espacios o comas.
timeoutmilisegundosSi la acción no responde a tiempo, la petición falla con el error Timeout..
cachetrue o un objetoGuarda el resultado de una acción con CACHE.
configobjetoValores que la acción lee desde $.config.
audittextRegistra un evento automático al completar la acción correctamente; la receta específica comprueba sus límites. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

El objeto $ de una acción

MiembroQué es
$.query, $.paramsLa cadena de consulta y los segmentos de la ruta, validados.
$.payloadLa entrada validada; es el mismo objeto que el segundo argumento de action.
$.userEl usuario autenticado.
$.configLa opción config.
$.name, $.idLa opción name y el id de la acción.
$.controllerEl $ de la ruta cuando la acción se llamó desde una ruta, así que $.controller.body es el cuerpo sin procesar. No existe cuando la acción se llama con ACTION().
$.callback(value)Responde con un valor; se filtra con output. Sin argumentos devuelve una función (err, response).
$.success(value)Responde { success: true }.
$.invalid(error)Responde con un error: un texto, un código de estado o un ErrorBuilder.
$.done(arg), $.successful(fn)Devuelven callbacks para funciones que informan de un error como primer argumento.
$.cookie(name, value, expiration)Lee o escribe una cookie de la petición.
$.redirect(url)Redirige la petición.
$.output(name)Elige cómo responde una ruta: json, html, xml, text, redirect, binary, jsonstring, empty o file.
$.unauthorized(...permissions)Responde 401 y devuelve true cuando el usuario no tiene ninguno de los permisos.
$.action(name, payload)Ejecuta otra acción con la misma petición.
$.hostname(path)La dirección de este servidor.
definitions/options.js
MIDDLEWARE('tag', function($, next) {
	$.response.headers['x-tag'] = 'on';
	next();
});

var counter = { cached: 0 };
MAIN.counter = counter;

NEWACTION('Options/named', {
	name: 'The name',
	config: { limit: 3 },
	action: function($) {
		$.callback({ name: $.name, id: $.id, limit: $.config.limit });
	}
});

NEWACTION('Options/guarded', {
	name: 'Needs a user',
	user: true,
	permissions: 'read',
	action: function($) {
		$.success();
	}
});

NEWACTION('Options/slow', {
	name: 'Never answers',
	timeout: 300,
	action: function($) {}
});

NEWACTION('Options/cached', {
	name: 'The cache option',
	query: 'page:Number',
	cache: { expire: '1 minute', query: 'page' },
	action: function($) {
		counter.cached++;
		$.callback({ page: $.query.page, runs: counter.cached });
	}
});

NEWACTION('Options/routed', {
	name: 'Declares its own route',
	route: 'GET /routed/ #tag',
	action: function($) {
		$.callback({ routed: true });
	}
});

NEWACTION('Options/output', {
	name: 'Chooses how to answer',
	action: function($) {
		$.output('plain');
		$.callback('plain text');
	}
});

AUTH(function($) {
	if ($.headers['x-user'])
		$.success({ id: '1', permissions: $.headers['x-user'].split(',') });
	else
		$.invalid();
});
controllers/options.js
exports.install = function() {
	ROUTE('GET /named/ --> *Options/named');
	ROUTE('GET /guarded/ --> *Options/guarded');
	ROUTE('GET /slow/ --> *Options/slow');
	ROUTE('GET /cached/ --> *Options/cached');
	ROUTE('GET /output/ --> *Options/output');
};