ForgeΤεκμηρίωση
el

Τεκμηρίωση

Επιλογές 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 ή falseΤο true απαντά 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)Επιστρέφουν callbacks για συναρτήσεις που αναφέρουν σφάλμα ως πρώτο όρισμα.
$.cookie(name, value, expiration)Διαβάζει ή γράφει ένα cookie του αιτήματος.
$.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');
};