Die Optionen der NEWACTION und das Objekt einer Aktion empfängt
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
| Option | Wert | Was sie tut |
|---|---|---|
name | Text | Eine Beschreibung der Action; sie ist auch als $.name verfügbar. |
action | function($, model) | Der Code der Action. model ist die validierte Eingabe. |
input | Text | Die Felder des Bodys als name:Type, durch Kommas getrennt; ein * vor dem Namen macht es zur Pflicht. Siehe die Seite zu den Eingabetypen. |
output | Text | Die Felder der Antwort; nicht aufgeführte Felder werden entfernt. |
params | Text | Die {name}-Segmente der Route, validiert wie input. |
query | Text | Der Query-String, validiert wie input. |
partial | true | Nur die gesendeten Felder erreichen die Action. Verwende es für PATCH. |
user | true oder false | true antwortet mit 401, wenn kein Benutzer angemeldet ist; false akzeptiert nur anonyme Anfragen. |
permissions | Text oder Array | 'read,write': Der Benutzer braucht eines davon (oder muss Super-Administrator sein). |
route | Text | Deklariert hier die Route der Action: 'GET /products/', oder true für eine API-Route. |
middleware | Text | Namen von Middleware, die vor der Action laufen, durch Leerzeichen oder Kommas getrennt. |
timeout | Millisekunden | Antwortet die Action nicht rechtzeitig, schlägt die Anfrage mit dem Fehler Timeout. fehl. |
cache | true oder ein Objekt | Speichern Sie das Ergebnis einer Action mit CACHE. |
config | Objekt | Werte, die die Action aus $.config liest. |
audit | text | Protokolliert nach erfolgreichem Abschluss ein Ereignis; das eigene Rezept prüft die Grenzen. action-audit |
csrf, encrypt, compress, publish | action-transport-boundaries | |
sa, su | true | action-hooks-and-admin |
oninput, onoutput | function | action-hooks-and-admin |
extend | path | action-hooks-and-admin |
Das Objekt $ einer Action
| Mitglied | Was es ist |
|---|---|
$.query, $.params | Der validierte Query-String und die Routensegmente. |
$.payload | Die validierte Eingabe; es ist dasselbe Objekt wie das zweite Argument von action. |
$.user | Der angemeldete Benutzer. |
$.config | Die Option config. |
$.name, $.id | Die Option name und die ID der Action. |
$.controller | Das $ 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. |
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();
});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');
};