Eu estou um pouco diferente dá aula, onde tem /produtos eu fiz um botão que vai para o form, mais quando eu tento salvar sem titulo em vez de dar o erro, ele salva.
app.get('/produtos/form', function(req,res){
res.render('produtos/form',{errosValidacao:{}, produto:{}});
});
app.post('/produtos', function(req,res){
var produto = req.body;
req.assert('titulo', 'Titulo é obrigatório').notEmpty();
req.assert('preco','Formato inválido').isFloat();
var erros = req.validationErrors();
if(erros){
res.render('produtos/form',{errosValidacao:erros,produto:produto});
return;
}
form :
<html>
<body>
<div class="erros">
<%if(errosValidacao){%>
<ul>
<%for(var i=0;i<errosValidacao.length;i++){%>
<li><%=errosValidacao[i].param%> - <%=errosValidacao[i].msg%></li>
<%}%>
</ul>
<%}%>
</div>
<form action="/produtos" method="post">
<div>
<label for="titulo">Titulo</label>
<input type="text" id="titulo" value="<%=produto.titulo%> "name="titulo" placeholder="Coloque o titulo">
</div>
<label for="preco">Preço</label>
<input type="text" id="preco" value="<%=produto.preco%>"name="preco" placeholder="150.5">
<div>
<label for="descricao">Titulo</label>
<textarea cols="20" rows="10" id="descricao "name="descricao" placeholder="Coloque uma descrição"><%=produto.descricao%></textarea>
</div>
<input type="submit" value="Salvar" />
</form>
</body>
</html>
e aqui é onde eu puis o " adicionar "
<html>
<body>
<table>
<tr>
<td>id</td>
<td>titulo</td>
<td>descricao</td>
<td>preco</td>
<td>Ação</td>
</tr>
<%for(var i=0;i<lista.length;i++) {%>
<tr>
<td><%=lista[i].id%></td>
<td><%=lista[i].titulo%></td>
<td><%=lista[i].descricao%></td>
<td><%=lista[i].preco%></td>
<td>
<form action="/produtos?_method=DELETE" method="post">
<input type="hidden" name="id" value="<%= lista[i].id %>" />
<input type="submit" value="Apagar" />
</form>
</td>
</tr>
<%}%>
</table>
<tr>
<form action="/produtos/form" method="get">
<input type="submit" value="Adicionar" />
</form>
</tr>
</body>
</html>
desde já agradeço muuuuito