ForgeDocumentação
pt

Documentação

Tipos de introdução da novação

Total.js 5 · total5@0.0.19 referencevalidationinput Executada com o Total.js 5

Uma definição é uma lista de name:Type separados por vírgulas, por exemplo *email:Email, age:Number. Um * antes do nome torna o campo obrigatório. O mesmo formato é usado por input (o corpo), params, query e output. O tipo converte o valor: a ação recebe o valor convertido, não o texto que foi enviado.

Os nomes dos tipos não distinguem maiúsculas de minúsculas. Cada tipo abaixo foi verificado enviando o valor da segunda coluna.

TipoValor enviadoValor recebidoNotas
String hello helloTexto; os espaços no início e no fim são removidos.
Text text text Texto mantido exatamente como foi enviado.
Email A@B.CZ a@b.czUm endereço de email válido, em minúsculas; tudo o resto é rejeitado.
Phone+421 900 123 456+421900123456Um número de telefone; os espaços são removidos.
URLhttps://totaljs.com/xhttps://totaljs.com/xUm URL válido; tudo o resto é rejeitado.
Namejohn smithJohn SmithColoca cada palavra com inicial maiúscula.
Capitalizehello big worldHello Big WorldColoca cada palavra com inicial maiúscula.
Capitalize2HELLO big WORLDHello big worldColoca apenas a primeira letra em maiúscula e o resto em minúsculas.
LowercaseABCabcMinúsculas.
UppercaseabcABCMaiúsculas.
SearchŽluťoučký Kůňzlutoucki kunMinúsculas sem acentos, para pesquisa.
SafeStringplain textplain textTexto; um valor com etiquetas HTML como <b> é rejeitado.
Color#FF0000#FF0000schema-enums-and-formats
Base64SGVsbG8=SGVsbG8=schema-enums-and-formats
Zip8110181101schema-enums-and-formats
Iconti ti-hometi ti-homeschema-enums-and-formats
Number12.512.5Um número; o texto é convertido.
Float3.143.14Um número; o texto é convertido.
Decimal2.52.5Um número; o texto é convertido.
Booleantruetruetrue ou false; o texto true é convertido.
Date2026-01-052026-01-05T00:00:00.000ZUma data. Em JSON é enviada como texto ISO.

Outras formas:

FormaExemploNotas
[String], [Number]ze_arr:[String]Um array desse tipo: cada item é convertido.
{ x:Number, y:String }zg_obj:{ x:Number, y:String }Um objeto aninhado, validado com os seus próprios campos.
String(5)zd_max:String(5)Um texto de no máximo 5 carateres; um texto mais longo é rejeitado.

Um valor que não se ajusta ao tipo é rejeitado com o estado 400 e o nome do campo no erro. Estes valores foram rejeitados nas verificações: SafeString com <b>x</b>, String(5) com dez carateres, um UID com abc e um GUID com not-guid. A receita de limites verifica Int, SmallInt, TinyInt, Number2: numeric-schema-boundaries. Nesta versão Int não trunca: 7.9 fica 7.9.

UID e GUID aceitam os valores que UID() e GUID() criam.

definitions/types.js
NEWACTION('Types/all', {
	name: 'Every type',
	input: 'a_string:String, b_text:Text, c_email:Email, d_phone:Phone, e_url:URL, f_name:Name, g_capitalize:Capitalize, h_capitalize2:Capitalize2, i_lowercase:Lowercase, j_uppercase:Uppercase, k_search:Search, l_safestring:SafeString, m_color:Color, n_base64:Base64, o_zip:Zip, p_icon:Icon, q_number:Number, r_float:Float, s_decimal:Decimal, t_boolean:Boolean, u_date:Date, ze_arr:[String], zf_nums:[Number], zg_obj:{ x:Number, y:String }, zd_max:String(5)',
	action: function($, model) {
		$.callback(model);
	}
});

NEWACTION('Types/ids', {
	name: 'UID and GUID',
	input: '*id:UID, *key:GUID',
	action: function($, model) {
		$.callback(model);
	}
});
controllers/types.js
exports.install = function() {
	ROUTE('POST /types/ @json --> *Types/all');
	ROUTE('POST /ids/ @json --> *Types/ids');
	ROUTE('GET /newids/', ids);
};

function ids($) {
	$.json({ id: UID(), key: GUID() });
}