ForgeDokumentation
sv

Dokumentation

Alternativ för NEWACTION och objektet en åtgärd mottagande

Total.js 5 · total5@0.0.19 referenceactionsvalidation Körd med Total.js 5

NEWACTION(name, options) deklarerar en åtgärd. name är dess id (Users/insert): routes använder det med --> *Users/insert och din kod med ACTION('Users/insert', payload).

Alternativ

AlternativVärdeVad det gör
nametextEn beskrivning av åtgärden; den finns också som $.name.
actionfunction($, model)Åtgärdens kod. model är den validerade indatan.
inputtextFälten i kroppen, som name:Type åtskilda av kommatecken; en * före namnet gör det obligatoriskt. Se sidan om indatatyper.
outputtextFälten i svaret; fält som inte listas tas bort.
paramstextRoutens {name}-segment, validerade som input.
querytextFrågesträngen, validerad som input.
partialtrueBara fälten som skickades når åtgärden. Använd det för PATCH.
usertrue eller falsetrue svarar 401 när ingen användare är inloggad; false accepterar bara anonyma begäranden.
permissionstext eller array'read,write': användaren behöver en av dem (eller vara superadministratör).
routetextDeklarerar åtgärdens route här: 'GET /products/', eller true för en API-route.
middlewaretextNamn på middleware som körs före åtgärden, åtskilda av mellanslag eller kommatecken.
timeoutmillisekunderNär åtgärden inte svarar i tid misslyckas begäran med felet Timeout..
cachetrue eller ett objektSpara resultatet av en åtgärd med CACHE.
configobjektVärden som åtgärden läser från $.config.
audittextRegistrerar en händelse efter lyckat slutförande; det separata receptet testar gränserna. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Objektet $ i en åtgärd

MedlemVad det är
$.query, $.paramsDen validerade frågesträngen och routens segment.
$.payloadDen validerade indatan; det är samma objekt som det andra argumentet till action.
$.userDen inloggade användaren.
$.configAlternativet config.
$.name, $.idAlternativet name och åtgärdens id.
$.controllerRoutens $ när åtgärden anropades från en route, så $.controller.body är den råa kroppen. Finns inte när åtgärden anropas med ACTION().
$.callback(value)Svarar med ett värde; det filtreras av output. Utan argument returnerar den en funktion (err, response).
$.success(value)Svarar { success: true }.
$.invalid(error)Svarar med ett fel: en text, en statuskod eller en ErrorBuilder.
$.done(arg), $.successful(fn)Returnerar callbacks för funktioner som rapporterar ett fel som första argument.
$.cookie(name, value, expiration)Läser eller skriver en cookie i begäran.
$.redirect(url)Omdirigerar begäran.
$.output(name)Väljer hur en route svarar: json, html, xml, text, redirect, binary, jsonstring, empty eller file.
$.unauthorized(...permissions)Svarar 401 och returnerar true när användaren inte har någon av behörigheterna.
$.action(name, payload)Kör en annan åtgärd med samma begäran.
$.hostname(path)Den här serverns adress.
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');
};