ForgeDocumentation
fr

Documentation

Options de NEWACTION et l'objet d'une action reçoit

Total.js 5 · total5@0.0.19 referenceactionsvalidation Exécutée avec Total.js 5

NEWACTION(name, options) déclare une action. name est son identifiant (Users/insert) : les routes l'utilisent avec --> *Users/insert et votre code avec ACTION('Users/insert', payload).

Options

OptionValeurCe qu'elle fait
nametexteUne description de l'action ; elle est aussi disponible comme $.name.
actionfunction($, model)Le code de l'action. model est l'entrée validée.
inputtexteLes champs du corps, sous la forme name:Type séparés par des virgules ; un * avant le nom le rend obligatoire. Voir la page sur les types d'entrée.
outputtexteLes champs de la réponse ; les champs non listés sont supprimés.
paramstexteLes segments {name} de la route, validés comme input.
querytexteLa chaîne de requête, validée comme input.
partialtrueSeuls les champs envoyés atteignent l'action. À utiliser pour PATCH.
usertrue ou falsetrue répond 401 quand aucun utilisateur n'est connecté ; false n'accepte que les requêtes anonymes.
permissionstexte ou tableau'read,write' : l'utilisateur doit en avoir un (ou être super administrateur).
routetexteDéclare ici la route de l'action : 'GET /products/', ou true pour une route API.
middlewaretexteNoms des middleware exécutés avant l'action, séparés par des espaces ou des virgules.
timeoutmillisecondesQuand l'action ne répond pas à temps, la requête échoue avec l'erreur Timeout..
cachetrue ou un objetConservez le résultat d’une action avec CACHE.
configobjetValeurs que l'action lit depuis $.config.
audittextEnregistre un événement après une exécution réussie ; la recette dédiée vérifie les limites. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

L'objet $ d'une action

MembreCe que c'est
$.query, $.paramsLa chaîne de requête et les segments de la route, validés.
$.payloadL'entrée validée ; c'est le même objet que le second argument de action.
$.userL'utilisateur connecté.
$.configL'option config.
$.name, $.idL'option name et l'identifiant de l'action.
$.controllerLe $ de la route quand l'action a été appelée depuis une route, donc $.controller.body est le corps brut. Il n'existe pas quand l'action est appelée avec ACTION().
$.callback(value)Répond avec une valeur ; elle est filtrée par output. Sans argument, elle renvoie une fonction (err, response).
$.success(value)Répond { success: true }.
$.invalid(error)Répond avec une erreur : un texte, un code d'état ou un ErrorBuilder.
$.done(arg), $.successful(fn)Renvoient des callbacks pour des fonctions qui signalent une erreur en premier argument.
$.cookie(name, value, expiration)Lit ou écrit un cookie de la requête.
$.redirect(url)Redirige la requête.
$.output(name)Choisit comment une route répond : json, html, xml, text, redirect, binary, jsonstring, empty ou file.
$.unauthorized(...permissions)Répond 401 et renvoie true quand l'utilisateur n'a aucune des permissions.
$.action(name, payload)Exécute une autre action avec la même requête.
$.hostname(path)L'adresse de ce serveur.
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');
};