ForgeDocumentazione
it

Documentazione

Le opzioni di NEWACTION e l'oggetto una azione riceve

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

NEWACTION(name, options) dichiara un'azione. name è il suo id (Users/insert): le route lo usano con --> *Users/insert e il tuo codice con ACTION('Users/insert', payload).

Opzioni

OpzioneValoreCosa fa
nametestoUna descrizione dell'azione; è disponibile anche come $.name.
actionfunction($, model)Il codice dell'azione. model è l'input validato.
inputtestoI campi del corpo, come name:Type separati da virgole; un * prima del nome lo rende obbligatorio. Vedi la pagina sui tipi di input.
outputtestoI campi della risposta; i campi non elencati vengono rimossi.
paramstestoI segmenti {name} della route, validati come input.
querytestoLa query string, validata come input.
partialtrueSolo i campi inviati raggiungono l'azione. Usalo per PATCH.
usertrue o falsetrue risponde 401 quando non c'è un utente autenticato; false accetta solo richieste anonime.
permissionstesto o array'read,write': l'utente ne deve avere uno (o essere super amministratore).
routetestoDichiara qui la route dell'azione: 'GET /products/', oppure true per una route API.
middlewaretestoNomi dei middleware eseguiti prima dell'azione, separati da spazi o virgole.
timeoutmillisecondiQuando l'azione non risponde in tempo, la richiesta fallisce con l'errore Timeout..
cachetrue o un oggettoConserva il risultato di un’azione con CACHE.
configoggettoValori che l'azione legge da $.config.
audittextRegistra un evento dopo il completamento riuscito; la ricetta dedicata ne verifica i limiti. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

L'oggetto $ di un'azione

MembroCos'è
$.query, $.paramsLa query string e i segmenti della route, validati.
$.payloadL'input validato; è lo stesso oggetto del secondo argomento di action.
$.userL'utente autenticato.
$.configL'opzione config.
$.name, $.idL'opzione name e l'id dell'azione.
$.controllerIl $ della route quando l'azione è stata chiamata da una route, quindi $.controller.body è il corpo grezzo. Non esiste quando l'azione viene chiamata con ACTION().
$.callback(value)Risponde con un valore; viene filtrato da output. Senza argomenti restituisce una funzione (err, response).
$.success(value)Risponde { success: true }.
$.invalid(error)Risponde con un errore: un testo, un codice di stato o un ErrorBuilder.
$.done(arg), $.successful(fn)Restituiscono callback per funzioni che segnalano un errore come primo argomento.
$.cookie(name, value, expiration)Legge o scrive un cookie della richiesta.
$.redirect(url)Reindirizza la richiesta.
$.output(name)Sceglie come risponde una route: json, html, xml, text, redirect, binary, jsonstring, empty o file.
$.unauthorized(...permissions)Risponde 401 e restituisce true quando l'utente non ha nessuno dei permessi.
$.action(name, payload)Esegue un'altra azione con la stessa richiesta.
$.hostname(path)L'indirizzo di questo server.
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');
};