Проверявайте границите на цифровата схема, вместо да приемате цялостна принуда
В total5@0.0.19, компактните числа всички влизат в валидатора на коренното число. Int не гарантира цялост: 7.9 се запазва. Number2 също така запазва тази фракция; не тълкува името му като кръгла до две десетични места.
TinyInt приема стойности от 0 до 255. SmallInt приема от -32767 до 32767; по-специално -32768 се отхвърля в тази версия. Тези проверки на подтипове налагат граници, но не изискват цели стойности: TinyInt приема 1.5. Приложете изрична проверка с Number.isInteger() за идентификатори, броячи или количества, които трябва да са цели числа. Тези наблюдения описват тази версия и тестваните стойности, не семантиката на SQL колони.
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);
}