ForgeDocumentação
pt

Documentação

Opções de NOVAÇÃO e o objeto uma ação recebe

Total.js 5 · total5@0.0.19 referenceactionsvalidation Executada com o Total.js 5

NEWACTION(name, options) declara uma ação. name é o seu id (Users/insert): as rotas usam-no com --> *Users/insert e o seu código com ACTION('Users/insert', payload).

Opções

OpçãoValorO que faz
nametextoUma descrição da ação; também está disponível como $.name.
actionfunction($, model)O código da ação. model é a entrada validada.
inputtextoOs campos do corpo, como name:Type separados por vírgulas; um * antes do nome torna-o obrigatório. Veja a página dos tipos de entrada.
outputtextoOs campos da resposta; os campos que não estão listados são removidos.
paramstextoOs segmentos {name} da rota, validados como input.
querytextoA query string, validada como input.
partialtrueSó os campos que foram enviados chegam à ação. Use-o para PATCH.
usertrue ou falsetrue responde 401 quando não há utilizador autenticado; false aceita apenas pedidos anónimos.
permissionstexto ou array'read,write': o utilizador precisa de um deles (ou de ser super administrador).
routetextoDeclara aqui a rota da ação: 'GET /products/', ou true para uma rota API.
middlewaretextoNomes de middleware que correm antes da ação, separados por espaços ou vírgulas.
timeoutmilissegundosQuando a ação não responde a tempo, o pedido falha com o erro Timeout..
cachetrue ou um objetoGuarde o resultado de uma ação com CACHE.
configobjetoValores que a ação lê de $.config.
audittextRegista um evento após a conclusão bem-sucedida; a receita específica verifica os limites. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

O objeto $ de uma ação

MembroO que é
$.query, $.paramsA query string e os segmentos da rota, validados.
$.payloadA entrada validada; é o mesmo objeto que o segundo argumento de action.
$.userO utilizador autenticado.
$.configA opção config.
$.name, $.idA opção name e o id da ação.
$.controllerO $ da rota quando a ação foi chamada a partir de uma rota, pelo que $.controller.body é o corpo em bruto. Não existe quando a ação é chamada com ACTION().
$.callback(value)Responde com um valor; é filtrado por output. Sem argumentos devolve uma função (err, response).
$.success(value)Responde { success: true }.
$.invalid(error)Responde com um erro: um texto, um código de estado ou um ErrorBuilder.
$.done(arg), $.successful(fn)Devolvem callbacks para funções que comunicam um erro como primeiro argumento.
$.cookie(name, value, expiration)Lê ou escreve um cookie do pedido.
$.redirect(url)Redireciona o pedido.
$.output(name)Escolhe como responde uma rota: json, html, xml, text, redirect, binary, jsonstring, empty ou file.
$.unauthorized(...permissions)Responde 401 e devolve true quando o utilizador não tem nenhuma das permissões.
$.action(name, payload)Executa outra ação com o mesmo pedido.
$.hostname(path)O endereço deste 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');
};