Sto lavorando su un modulo di registrazione di base in Node.js (con Express), e sto cercando di trovare il modo più semplice per fornire la convalida del modulo di base. Sono andato con "Express-Validator", che sembra fare un buon lavoro. Tuttavia, il mio obiettivo è semplicemente mostrare tutti i messaggi di convalida richiesti e per lasciare i valori immessi dall'utente solo.Node.js (Express) Modulo Cancella su invio
Sembra che le informazioni sulla richiesta non stiano rientrando nel res.render, il che credo abbia senso. Tuttavia, ho guardato ovunque mi viene in mente e non riesco a trovare alcun riferimento che discuti su come mantenere popolati i campi modulo dopo aver mostrato i messaggi di errore.
Qui di seguito è un piccolo frammento che descrive il mio approccio:
post: function(req, res){
var userName = req.body.username;
var password = req.body.password;
//Validate input
req.assert("username", 'Invalid email address.').isEmail();
req.assert("password", 'Password cannot be empty.').notEmpty();
req.assert("passwordConfirm", 'Passwords entered do not match!').equals(password);
//Make sure we have no validation errors
var pageErrors = req.validationErrors();
if(!pageErrors)
{
userModel.CreateUser(userName, password, function(err){
if(err)
{
//there was a problem inserting new user... probably already exists
//will need to check the error to confirm
var dbErrorMessage = "Could not insert record into database!";
if(err.code === 11000)
{
//this is a duplicate entry
dbErrorMessage = "A user with that email address already exists!";
}
res.render('register.html', { pageErrors: [{msg: dbErrorMessage }]});
}
else
{
res.render('register.html', { successMessage: successMessage });
}
});
}
else
{
res.render('register.html', { pageErrors: pageErrors });
}
Questo è ciò che la gente intende quando dicono che "il web è senza stato". È necessario reinserire manualmente i valori dopo ogni richiesta. –
Sì, ho capito che sarebbe stato necessario un intervento da parte del server per ritrasferire i valori, ma speravo che Express avesse qualcosa (o un componente aggiuntivo del middleware) che potesse farlo per noi. Mi limiterò a seguire il percorso di invio del modulo AJAX. Sarebbe comunque un'esperienza utente migliore. – creativename