ForgeДокументация
bg

Документация

Опции за NEWACTION и обектът на действие получава

Total.js 5 · total5@0.0.19 referenceactionsvalidation Изпълнено с Total.js 5

NEWACTION(name, options) декларира действие. name е неговият идентификатор (Users/insert): маршрутите го използват с --> *Users/insert, а вашият код с ACTION('Users/insert', payload).

Опции

ОпцияСтойностКакво прави
nameтекстОписание на действието; налично е и като $.name.
actionfunction($, model)Кодът на действието. model е валидираният вход.
inputтекстПолетата на тялото, като name:Type, разделени със запетаи; * пред името го прави задължително. Вижте страницата за входните типове.
outputтекстПолетата на отговора; полетата, които не са изброени, се премахват.
paramsтекстСегментите {name} на маршрута, валидирани като input.
queryтекстНизът на заявката, валидиран като input.
partialtrueДо действието стигат само изпратените полета. Използвайте го за PATCH.
usertrue или falsetrue отговаря 401, когато няма влязъл потребител; false приема само анонимни заявки.
permissionsтекст или масив'read,write': потребителят се нуждае от едно от тях (или да е супер администратор).
routeтекстДекларира тук маршрута на действието: 'GET /products/', или true за маршрут API.
middlewareтекстИмена на middleware, които се изпълняват преди действието, разделени с интервали или запетаи.
timeoutмилисекундиКогато действието не отговори навреме, заявката пропада с грешката Timeout..
cachetrue или обектЗапазвайте резултата от действие с CACHE.
configобектСтойности, които действието чете от $.config.
audittextЗаписва събитие след успешно завършване; отделната рецепта проверява границите. action-audit
csrf, encrypt, compress, publishaction-transport-boundaries
sa, sutrueaction-hooks-and-admin
oninput, onoutputfunctionaction-hooks-and-admin
extendpathaction-hooks-and-admin

Обектът $ на действие

ЧленКакво е
$.query, $.paramsВалидираният низ на заявката и сегментите на маршрута.
$.payloadВалидираният вход; това е същият обект като втория аргумент на action.
$.userВлезлият потребител.
$.configОпцията config.
$.name, $.idОпцията name и идентификаторът на действието.
$.controller$ на маршрута, когато действието е извикано от маршрут, така че $.controller.body е суровото тяло. Не съществува, когато действието се вика с ACTION().
$.callback(value)Отговаря със стойност; филтрира се от output. Без аргументи връща функция (err, response).
$.success(value)Отговаря { success: true }.
$.invalid(error)Отговаря с грешка: текст, код на състоянието или ErrorBuilder.
$.done(arg), $.successful(fn)Връщат callback функции за функции, които съобщават грешка като първи аргумент.
$.cookie(name, value, expiration)Чете или записва бисквитка на заявката.
$.redirect(url)Пренасочва заявката.
$.output(name)Избира как отговаря маршрутът: json, html, xml, text, redirect, binary, jsonstring, empty или file.
$.unauthorized(...permissions)Отговаря 401 и връща true, когато потребителят няма нито едно от разрешенията.
$.action(name, payload)Изпълнява друго действие със същата заявка.
$.hostname(path)Адресът на този сървър.
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');
};