Verifique os limites do esquema numérico em vez de assumir a coerção completa
Em total5@0.0.19, os tipos numéricos compactos entram no validador do número nativo. Int não garante um integer: 7.9 é preservado. também Number2 conserva esta fração; não interprete seu nome como redondo para dois lugares decimais.
TinyInt aceita valores de 0 a 255. SmallInt aceita de -32767 a 32767; em particular, -32768 é rejeitado nesta versão. Estas verificações de subtipo impõem limites mas não exigem valores inteiros: TinyInt aceita 1.5. Aplique uma verificação explícita com Number.isInteger() para identificadores, contadores ou quantidades que tenham de ser inteiros. Estas observações descrevem esta versão e os valores testados, não a semântica das colunas 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);
}