1
resposta

Problemas com refresh na validação

Quando preencho um valor inválido, ele recarrega o form com os valores preenchidos e informa os erros. Porém a url fica só /produtos e ao dar um f5 (reload) ele mostra a opção de resende e ao tentar fazer o resend, ele cadastra a informação e crasha (o serviço sai do ar).

Erro do console:

/home/marcelo/node/aula5.4/casadocodigo/nodemodules/mysql/lib/protocol/Parser.js:78 throw err; // Rethrow non-MySQL errors ^ Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (http.js:724:11) at ServerResponse.header (/home/marcelo/node/aula5.4/casadocodigo/node_modules/express/lib/response.js:719:10) at ServerResponse.location (/home/marcelo/node/aula5.4/casadocodigo/node_modules/express/lib/response.js:836:15) at ServerResponse.redirect (/home/marcelo/node/aula5.4/casadocodigo/node_modules/express/lib/response.js:874:18) at Query._callback (/home/marcelo/node/aula5.4/casadocodigo/app/routes/produtos.js:69:8) at Query.Sequence.end (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/protocol/sequences/Sequence.js:85:24) at Query.ErrorPacket (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/protocol/sequences/Query.js:94:8) at Protocol._parsePacket (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/protocol/Protocol.js:280:23) at Parser.write (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/protocol/Parser.js:74:12) at Protocol.write (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/protocol/Protocol.js:39:16) at Socket. (/home/marcelo/node/aula5.4/casadocodigo/node_modules/mysql/lib/Connection.js:109:28) at Socket.emit (events.js:95:17) at Socket. (_stream_readable.js:765:14) at Socket.emit (events.js:92:17) at emitReadable (_stream_readable.js:427:10) at emitReadable (_stream_readable.js:423:5)

1 resposta

Oi Marcelo, tudo bem?

Precisava olhar o código da função certinho para ter certeza da minha resposta. Duas coisas:

A url fica a mesma pq quando rola um erro de validação no servidor, você apenas faz um redirect no servidor, o navegador não sabe nada disso. Esse é o motivo da url não mudar e do F5 solicitar enviar os mesmos dados.

O erro Can't set headers tem a ver com o fato da gente tentar escrever no response depois de já ter usado, por exemplo, o método render. Posta o código aqui?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software