ForgeDocumentatie
nl

Documentatie

Opties van NEWACTION en het object een actie ontvangt

Total.js 5 · total5@0.0.19 referenceactionsvalidation Uitgevoerd met Total.js 5

NEWACTION(name, options) declareert een actie. name is de id (Users/insert): routes gebruiken die met --> *Users/insert en je code met ACTION('Users/insert', payload).

Opties

OptieWaardeWat het doet
nametekstEen beschrijving van de actie; ook beschikbaar als $.name.
actionfunction($, model)De code van de actie. model is de gevalideerde invoer.
inputtekstDe velden van de body, als name:Type gescheiden door komma's; een * voor de naam maakt het verplicht. Zie de pagina over invoertypen.
outputtekstDe velden van het antwoord; velden die niet zijn opgesomd worden verwijderd.
paramstekstDe {name}-segmenten van de route, gevalideerd zoals input.
querytekstDe querystring, gevalideerd zoals input.
partialtrueAlleen de velden die zijn verzonden bereiken de actie. Gebruik het voor PATCH.
usertrue of falsetrue antwoordt 401 als er geen ingelogde gebruiker is; false accepteert alleen anonieme verzoeken.
permissionstekst of array'read,write': de gebruiker heeft er een van nodig (of moet superbeheerder zijn).
routetekstDeclareert hier de route van de actie: 'GET /products/', of true voor een API-route.
middlewaretekstNamen van middleware die vóór de actie draaien, gescheiden door spaties of komma's.
timeoutmillisecondenAls de actie niet op tijd antwoordt, mislukt het verzoek met de fout Timeout..
cachetrue of een objectBewaar het resultaat van een actie met CACHE.
configobjectWaarden die de actie leest uit $.config.
audittextRegistreert een gebeurtenis na succesvolle voltooiing; het aparte recept controleert de grenzen. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Het object $ van een actie

LidWat het is
$.query, $.paramsDe gevalideerde querystring en routesegmenten.
$.payloadDe gevalideerde invoer; het is hetzelfde object als het tweede argument van action.
$.userDe ingelogde gebruiker.
$.configDe optie config.
$.name, $.idDe optie name en de id van de actie.
$.controllerDe $ van de route wanneer de actie vanuit een route is aangeroepen, dus $.controller.body is de ruwe body. Bestaat niet wanneer de actie met ACTION() wordt aangeroepen.
$.callback(value)Antwoordt met een waarde; die wordt gefilterd door output. Zonder argumenten geeft het een functie (err, response) terug.
$.success(value)Antwoordt { success: true }.
$.invalid(error)Antwoordt met een fout: een tekst, een statuscode of een ErrorBuilder.
$.done(arg), $.successful(fn)Geven callbacks terug voor functies die een fout als eerste argument melden.
$.cookie(name, value, expiration)Leest of schrijft een cookie van het verzoek.
$.redirect(url)Verwijst het verzoek door.
$.output(name)Kiest hoe een route antwoordt: json, html, xml, text, redirect, binary, jsonstring, empty of file.
$.unauthorized(...permissions)Antwoordt 401 en geeft true terug wanneer de gebruiker geen van de rechten heeft.
$.action(name, payload)Voert een andere actie uit met hetzelfde verzoek.
$.hostname(path)Het adres van deze 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');
};