ForgeDokumentation
de

Dokumentation

Die Optionen der NEWACTION und das Objekt einer Aktion empfängt

Total.js 5 · total5@0.0.19 referenceactionsvalidation Mit Total.js 5 ausgeführt

NEWACTION(name, options) deklariert eine Action. name ist ihre ID (Users/insert): Routen verwenden sie mit --> *Users/insert und dein Code mit ACTION('Users/insert', payload).

Optionen

OptionWertWas sie tut
nameTextEine Beschreibung der Action; sie ist auch als $.name verfügbar.
actionfunction($, model)Der Code der Action. model ist die validierte Eingabe.
inputTextDie Felder des Bodys als name:Type, durch Kommas getrennt; ein * vor dem Namen macht es zur Pflicht. Siehe die Seite zu den Eingabetypen.
outputTextDie Felder der Antwort; nicht aufgeführte Felder werden entfernt.
paramsTextDie {name}-Segmente der Route, validiert wie input.
queryTextDer Query-String, validiert wie input.
partialtrueNur die gesendeten Felder erreichen die Action. Verwende es für PATCH.
usertrue oder falsetrue antwortet mit 401, wenn kein Benutzer angemeldet ist; false akzeptiert nur anonyme Anfragen.
permissionsText oder Array'read,write': Der Benutzer braucht eines davon (oder muss Super-Administrator sein).
routeTextDeklariert hier die Route der Action: 'GET /products/', oder true für eine API-Route.
middlewareTextNamen von Middleware, die vor der Action laufen, durch Leerzeichen oder Kommas getrennt.
timeoutMillisekundenAntwortet die Action nicht rechtzeitig, schlägt die Anfrage mit dem Fehler Timeout. fehl.
cachetrue oder ein ObjektSpeichern Sie das Ergebnis einer Action mit CACHE.
configObjektWerte, die die Action aus $.config liest.
audittextProtokolliert nach erfolgreichem Abschluss ein Ereignis; das eigene Rezept prüft die Grenzen. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Das Objekt $ einer Action

MitgliedWas es ist
$.query, $.paramsDer validierte Query-String und die Routensegmente.
$.payloadDie validierte Eingabe; es ist dasselbe Objekt wie das zweite Argument von action.
$.userDer angemeldete Benutzer.
$.configDie Option config.
$.name, $.idDie Option name und die ID der Action.
$.controllerDas $ der Route, wenn die Action aus einer Route aufgerufen wurde, sodass $.controller.body der rohe Body ist. Es existiert nicht, wenn die Action mit ACTION() aufgerufen wird.
$.callback(value)Antwortet mit einem Wert; er wird durch output gefiltert. Ohne Argumente liefert es eine Funktion (err, response).
$.success(value)Antwortet { success: true }.
$.invalid(error)Antwortet mit einem Fehler: einem Text, einem Statuscode oder einem ErrorBuilder.
$.done(arg), $.successful(fn)Liefern Callbacks für Funktionen, die einen Fehler als erstes Argument melden.
$.cookie(name, value, expiration)Liest oder schreibt ein Cookie der Anfrage.
$.redirect(url)Leitet die Anfrage weiter.
$.output(name)Wählt, wie eine Route antwortet: json, html, xml, text, redirect, binary, jsonstring, empty oder file.
$.unauthorized(...permissions)Antwortet 401 und liefert true, wenn der Benutzer keine der Berechtigungen hat.
$.action(name, payload)Führt eine andere Action mit derselben Anfrage aus.
$.hostname(path)Die Adresse dieses Servers.
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');
};