Appeler une action depuis votre propre code
ACTION(name, payload) renvoie un appelant qui exécute l'action avec toute sa validation, exactement comme si elle venait d'une route. Le deuxième argument est le payload (l'entrée). Enchaînez .query() et .user() pour lui donner plus de données, et terminez par .callback(function(err, response) {}) ou .promise() (à utiliser avec await). Quand les données sont invalides, err est un error builder au lieu d'une exception.
NEWACTION('Math/add', {
name: 'Add two numbers',
input: '*a:Number, *b:Number',
action: function($, model) {
$.callback({ sum: model.a + model.b });
}
});exports.install = function() {
ROUTE('GET /sum/', sum);
ROUTE('GET /sum-promise/', sum_promise);
};
function sum($) {
ACTION('Math/add', { a: '2', b: '3' }).callback(function(err, response) {
if (err)
$.invalid(err);
else
$.json(response);
});
}
async function sum_promise($) {
try {
var response = await ACTION('Math/add', { a: 10, b: 5 }).promise();
$.json(response);
} catch (err) {
$.invalid(400);
}
}