Ομαδοποίηση actions σε ένα schema και επαναχρησιμοποίηση ορισμών input
Το NEWSCHEMA(name, fn) ομαδοποιεί τα actions μιας οντότητας. Η συνάρτηση λαμβάνει το αντικείμενο του schema και το schema.action(name, meta) καταχωρίζει ένα action με όνομα Name/action, με τις ίδιες επιλογές με το NEWACTION() (input, output, params, user, permissions, action...). Παντού αλλού το action χρησιμοποιείται με το πλήρες όνομά του, ακριβώς σαν να είχε δηλωθεί με NEWACTION('Users/insert', ...): ROUTE('POST /users/ --> *Users/insert') ή ACTION('Users/insert', payload).
Ένα τμήμα ορισμού input που μοιράζονται πολλά actions, όπως μια διεύθυνση, μπαίνει σε δικό του αρχείο στο jsonschemas/. Ένα αρχείο .txt περιέχει την ίδια λίστα name:Type με το input· το όνομα του αρχείου είναι το όνομα του schema. Αναφερθείτε σε αυτό από ένα input με @Name και τα πεδία του (και ποια είναι υποχρεωτικά) προστίθενται στα δικά του πεδία του action.
*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');
};