Quando utilizamos o Express Validator,
const erros = req.validationErrors(); // Retorna os erros.
if(erros) {
resp.render('produtos/form',{ erros });
return;
}
Essa variável erros é retornada como um JSON certo? Por exemplo, se tivermos dois erros (preço e título por exemplo) vai retornar um array de objetos com as props param, msg, etc...
Na view form.ejs, eu pensei em fazer algo como:
<% if(erros) { %>
<ul>
<% erros.forEach(function(erro){%>
<li>
<%= erro.param %> - <%= erro.msg %>
</li>
<%});%>
</ul>
<%}%>
Porém ele não funciona. Resolvi ver o typeof do erros no console.log e recebi um object
. Aí fiquei na dúvida sobre como funciona o JSON.
1º: Isso não é uma estrutura de objetos Javascript?
[
{ location: 'body',
param: 'titulo',
msg: 'Título é necessário',
value: '' } ]
[ { location: 'body',
param: 'titulo',
msg: 'Título é necessário',
value: '' },
{ location: 'body',
param: 'preco',
msg: 'Formato inválido',
value: 'x' }
]
2º: Isso sim é uma estrutura JSON, certo?
[ { "location": "body",
"param": "titulo",
"msg": "Título é necessário",
"value": '' },
{ "location": "body",
"param": "preco",
"msg": "Formato inválido",
"value": "x" } ]
Se a estrutura Nº1 é uma estrutura JS, por que eu não consigo acessar a função?
erros.forEach(function(erros){
});