ForgeDokumentácia
sk

Dokumentácia

Možnosti NEWACTION a objekt akcie prijíma

Total.js 5 · total5@0.0.19 referenceactionsvalidation Spustené s Total.js 5

NEWACTION(name, options) deklaruje akciu. name je jej id (Users/insert): routy ho používajú cez --> *Users/insert a váš kód cez ACTION('Users/insert', payload).

Voľby

VoľbaHodnotaČo robí
nametextPopis akcie; dostupný je aj ako $.name.
actionfunction($, model)Kód akcie. model je validovaný vstup.
inputtextPolia tela, ako name:Type oddelené čiarkami; * pred názvom ho robí povinným. Pozrite stránku o vstupných typoch.
outputtextPolia odpovede; polia, ktoré nie sú uvedené, sa odstránia.
paramstextSegmenty {name} routy, validované ako input.
querytextReťazec dotazu, validovaný ako input.
partialtrueDo akcie sa dostanú iba polia, ktoré boli odoslané. Použite pre PATCH.
usertrue alebo falsetrue odpovie 401, keď nie je prihlásený používateľ; false akceptuje iba anonymné požiadavky.
permissionstext alebo pole'read,write': používateľ potrebuje jedno z nich (alebo byť superadministrátor).
routetextTu deklaruje routu akcie: 'GET /products/', alebo true pre routu API.
middlewaretextNázvy middleware, ktoré sa spustia pred akciou, oddelené medzerami alebo čiarkami.
timeoutmilisekundyKeď akcia neodpovie včas, požiadavka zlyhá s chybou Timeout..
cachetrue alebo objektVýsledok akcie si uložte cez CACHE.
configobjektHodnoty, ktoré akcia číta z $.config.
audittextPo úspešnom dokončení zaznamená automatickú udalosť; hranice overuje samostatný recept. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Objekt $ akcie

ČlenČo to je
$.query, $.paramsValidovaný reťazec dotazu a segmenty routy.
$.payloadValidovaný vstup; je to ten istý objekt ako druhý argument action.
$.userPrihlásený používateľ.
$.configVoľba config.
$.name, $.idVoľba name a id akcie.
$.controller$ routy, keď bola akcia volaná z routy, takže $.controller.body je nespracované telo. Neexistuje, keď sa akcia volá cez ACTION().
$.callback(value)Odpovie hodnotou; filtruje sa cez output. Bez argumentov vráti funkciu (err, response).
$.success(value)Odpovie { success: true }.
$.invalid(error)Odpovie chybou: textom, stavovým kódom alebo ErrorBuilder.
$.done(arg), $.successful(fn)Vracajú callbacky pre funkcie, ktoré hlásia chybu ako prvý argument.
$.cookie(name, value, expiration)Číta alebo zapisuje cookie požiadavky.
$.redirect(url)Presmeruje požiadavku.
$.output(name)Vyberie, ako routa odpovie: json, html, xml, text, redirect, binary, jsonstring, empty alebo file.
$.unauthorized(...permissions)Odpovie 401 a vráti true, keď používateľ nemá žiadne z oprávnení.
$.action(name, payload)Spustí inú akciu s tou istou požiadavkou.
$.hostname(path)Adresa tohto servera.
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');
};