ForgeDocumentație
ro

Documentație

Opțiuni de NEWACTION și obiectul unei acțiuni primește

Total.js 5 · total5@0.0.19 referenceactionsvalidation Executată cu Total.js 5

NEWACTION(name, options) declară o acțiune. name este id-ul ei (Users/insert): rutele îl folosesc cu --> *Users/insert, iar codul tău cu ACTION('Users/insert', payload).

Opțiuni

OpțiuneValoareCe face
nametextO descriere a acțiunii; este disponibilă și ca $.name.
actionfunction($, model)Codul acțiunii. model este intrarea validată.
inputtextCâmpurile corpului, ca name:Type separate prin virgule; un * înaintea numelui îl face obligatoriu. Vezi pagina despre tipurile de intrare.
outputtextCâmpurile răspunsului; câmpurile care nu sunt enumerate sunt eliminate.
paramstextSegmentele {name} ale rutei, validate ca input.
querytextȘirul de interogare, validat ca input.
partialtrueDoar câmpurile trimise ajung la acțiune. Folosește-l pentru PATCH.
usertrue sau falsetrue răspunde 401 când nu există un utilizator autentificat; false acceptă doar cereri anonime.
permissionstext sau array'read,write': utilizatorul are nevoie de unul dintre ele (sau să fie super administrator).
routetextDeclară aici ruta acțiunii: 'GET /products/', sau true pentru o rută API.
middlewaretextNumele middleware-ului care rulează înaintea acțiunii, separate prin spații sau virgule.
timeoutmilisecundeCând acțiunea nu răspunde la timp, cererea eșuează cu eroarea Timeout..
cachetrue sau un obiectPăstrează rezultatul unei acțiuni cu CACHE.
configobiectValori pe care acțiunea le citește din $.config.
audittextÎnregistrează un eveniment după finalizarea cu succes; rețeta dedicată verifică limitele. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Obiectul $ al unei acțiuni

MembruCe este
$.query, $.paramsȘirul de interogare și segmentele rutei, validate.
$.payloadIntrarea validată; este același obiect cu al doilea argument al lui action.
$.userUtilizatorul autentificat.
$.configOpțiunea config.
$.name, $.idOpțiunea name și id-ul acțiunii.
$.controller$ al rutei când acțiunea a fost apelată dintr-o rută, deci $.controller.body este corpul brut. Nu există când acțiunea este apelată cu ACTION().
$.callback(value)Răspunde cu o valoare; este filtrată prin output. Fără argumente returnează o funcție (err, response).
$.success(value)Răspunde { success: true }.
$.invalid(error)Răspunde cu o eroare: un text, un cod de stare sau un ErrorBuilder.
$.done(arg), $.successful(fn)Returnează callback-uri pentru funcții care raportează o eroare ca prim argument.
$.cookie(name, value, expiration)Citește sau scrie un cookie al cererii.
$.redirect(url)Redirecționează cererea.
$.output(name)Alege cum răspunde o rută: json, html, xml, text, redirect, binary, jsonstring, empty sau file.
$.unauthorized(...permissions)Răspunde 401 și returnează true când utilizatorul nu are niciuna dintre permisiuni.
$.action(name, payload)Rulează o altă acțiune cu aceeași cerere.
$.hostname(path)Adresa acestui 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');
};