Akciók csoportosítása sémában és input-definíciók újrahasznosítása
A NEWSCHEMA(name, fn) egy entitás akcióit csoportosítja. A függvény megkapja a séma objektumot, a schema.action(name, meta) pedig regisztrál egy Name/action nevű akciót, ugyanazokkal az opciókkal, mint a NEWACTION() (input, output, params, user, permissions, action...). Máshol az akciót a teljes nevén használod, pontosan úgy, mintha NEWACTION('Users/insert', ...)-tel deklaráltad volna: ROUTE('POST /users/ --> *Users/insert') vagy ACTION('Users/insert', payload).
Egy input-definíció több akció által megosztott részlete, például egy cím, saját fájlba kerül a jsonschemas/ mappában. Egy .txt fájl ugyanazt a name:Type listát tartalmazza, mint az input; a fájl neve a séma neve. Hivatkozz rá egy input-ból @Name-mel, és a mezői (és hogy melyek kötelezők) hozzáadódnak az akció saját mezőihez.
*street:String, *city:String, zip:StringNEWSCHEMA('Users', function(schema) {
schema.action('insert', {
name: 'Create a user',
input: '*name:String, @Address',
output: 'id:UID, name:String, city:String',
action: function($, model) {
$.callback({ id: UID(), name: model.name, city: model.city });
}
});
schema.action('count', {
name: 'Count users',
action: function($) {
$.callback({ count: 2 });
}
});
});exports.install = function() {
ROUTE('POST /users/ --> *Users/insert');
ROUTE('GET /users/count/ --> *Users/count');
};