ForgeDokumentacja
pl

Dokumentacja

Opcje nowości i obiekt akcji otrzymuje

Total.js 5 · total5@0.0.19 referenceactionsvalidation Uruchomiono z Total.js 5

NEWACTION(name, options) deklaruje akcję. name to jej id (Users/insert): trasy używają go z --> *Users/insert, a twój kod z ACTION('Users/insert', payload).

Opcje

OpcjaWartośćCo robi
nametekstOpis akcji; jest też dostępny jako $.name.
actionfunction($, model)Kod akcji. model to zwalidowane wejście.
inputtekstPola treści, jako name:Type oddzielone przecinkami; * przed nazwą czyni pole wymaganym. Zobacz stronę o typach wejścia.
outputtekstPola odpowiedzi; pola, których nie wymieniono, są usuwane.
paramstekstSegmenty {name} trasy, walidowane jak input.
querytekstCiąg zapytania, walidowany jak input.
partialtrueDo akcji trafiają tylko pola, które zostały wysłane. Użyj dla PATCH.
usertrue lub falsetrue odpowiada 401, gdy nie ma zalogowanego użytkownika; false akceptuje tylko żądania anonimowe.
permissionstekst lub tablica'read,write': użytkownik potrzebuje jednego z nich (lub być super administratorem).
routetekstDeklaruje tutaj trasę akcji: 'GET /products/', lub true dla trasy API.
middlewaretekstNazwy middleware uruchamianych przed akcją, oddzielone spacjami lub przecinkami.
timeoutmilisekundyGdy akcja nie odpowie na czas, żądanie kończy się błędem Timeout..
cachetrue lub obiektPrzechowuj wynik akcji za pomocą CACHE.
configobiektWartości, które akcja czyta z $.config.
audittextZapisuje zdarzenie po pomyślnym zakończeniu; osobny przepis sprawdza granice działania. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Obiekt $ akcji

ElementCzym jest
$.query, $.paramsZwalidowany ciąg zapytania i segmenty trasy.
$.payloadZwalidowane wejście; to ten sam obiekt co drugi argument action.
$.userZalogowany użytkownik.
$.configOpcja config.
$.name, $.idOpcja name i id akcji.
$.controller$ trasy, gdy akcję wywołano z trasy, więc $.controller.body to surowa treść. Nie istnieje, gdy akcję wywołano przez ACTION().
$.callback(value)Odpowiada wartością; jest filtrowana przez output. Bez argumentów zwraca funkcję (err, response).
$.success(value)Odpowiada { success: true }.
$.invalid(error)Odpowiada błędem: tekstem, kodem statusu lub ErrorBuilder.
$.done(arg), $.successful(fn)Zwracają callbacki dla funkcji, które zgłaszają błąd jako pierwszy argument.
$.cookie(name, value, expiration)Odczytuje lub zapisuje ciasteczko żądania.
$.redirect(url)Przekierowuje żądanie.
$.output(name)Wybiera, jak odpowiada trasa: json, html, xml, text, redirect, binary, jsonstring, empty lub file.
$.unauthorized(...permissions)Odpowiada 401 i zwraca true, gdy użytkownik nie ma żadnego z uprawnień.
$.action(name, payload)Uruchamia inną akcję z tym samym żądaniem.
$.hostname(path)Adres tego serwera.
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');
};