ForgeTotal.js 5
fr

Total.js 5

Vérifier les limites numériques au lieu d'assumer la coercition intégrale

Total.js 5 · total5@0.0.19 validationschemanumbersboundaries Exécutée avec Total.js 5

Dans total5@0.0.19, les types numériques compacts entrent tous dans le validateur du nombre natif. Int ne garantit pas un intégral: 7.9 est conservé. Number2 conserve également cette fraction; ne interprète pas son nom comme en rondant à deux places décimales.

TinyInt accepte les valeurs de 0 à 255. SmallInt accepte de -32767 à 32767 ; notamment, -32768 est rejeté dans cette version. Ces contrôles de sous-types imposent des bornes mais n'exigent pas de valeurs entières : TinyInt accepte 1.5. Appliquez une vérification explicite avec Number.isInteger() pour les identifiants, compteurs ou quantités qui doivent être entiers. Ces observations décrivent cette version et les valeurs testées, pas la sémantique des colonnes SQL.

controllers/numbers.js
var schema = NEWSCHEMA('NumericBoundaries', '*integer:Int,*small:SmallInt,*tiny:TinyInt,*decimal:Number2');

exports.install = function() {
	ROUTE('POST /numbers/ @json', numbers);
};

function numbers($) {
	var result = schema.transform($.body);
	if (result.error) {
		$.response.status = 400;
		$.json({ error: 'invalid numeric input' });
		return;
	}
	$.json(result.response);
}