ForgeTotal.js 5
nl

Total.js 5

Een actie aanroepen vanuit je eigen code

Total.js 5 · total5@0.0.19 actions Uitgevoerd met Total.js 5

ACTION(name, payload) geeft een aanroeper terug die de actie uitvoert met al haar validatie, precies alsof ze van een route kwam. Het tweede argument is de payload (de invoer). Koppel .query() en .user() om meer gegevens mee te geven en sluit af met .callback(function(err, response) {}) of .promise() (gebruik met await). Als de gegevens ongeldig zijn, is err een error builder in plaats van een exception.

definitions/math.js
NEWACTION('Math/add', {
	name: 'Add two numbers',
	input: '*a:Number, *b:Number',
	action: function($, model) {
		$.callback({ sum: model.a + model.b });
	}
});
controllers/math.js
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);
	}
}