# Проверявайте границите на цифровата схема, вместо да приемате цялостна принуда

> Проверете Int, SmallInt, TinyInt и Number2 с индиански компактни схеми, включително фракционни стойности, нулеви и извън ранг вноски.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: bg
Content-SHA256: 80ffa19a8d7eec59fc9675b3f0ae11b3f0e19bc634a44eed898595ee11189b25
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

В `total5@0.0.19`, компактните числа всички влизат в валидатора на коренното число. **`Int` не гарантира цялост**: `7.9` се запазва. `Number2` също така запазва тази фракция; не тълкува името му като кръгла до две десетични места.

`TinyInt` приема стойности от 0 до 255. `SmallInt` приема от -32767 до 32767; по-специално -32768 се отхвърля в тази версия. Тези проверки на подтипове налагат граници, но не изискват цели стойности: `TinyInt` приема `1.5`. Приложете изрична проверка с `Number.isInteger()` за идентификатори, броячи или количества, които трябва да са цели числа. Тези наблюдения описват тази версия и тестваните стойности, не семантиката на SQL колони.

```js 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);
}
```
