npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

old-input

v1.1.0

Published

Middleware to recall previously submitted form values in Node.js and Express.

Downloads

346

Readme

old-input

Middleware to recall previously submitted form values in Node.js and Express.

When a user submits a form with data, and the submitted data fails validation, your app would typically redirect the user back to the same form page, perhaps with an error to display.

This middleware allows you to easily recall the previously POSTed form values, so you can re-populate the form, as needed, after the redirect.

Requirements

This middleware requires the body-parser and the express-session modules. In addition, the sanitizer module is used to sanitize the POSTed data.

NOTE: The body-parser and express-session middleware must be used in the app before using old-input, as old-input requires the presence of req.body and req.session.

Installation

$ npm install old-input

Example

Setup

var express = require('express');
var bodyParser = require('body-parser');
var expressSession = require('express-session');
var oldInput = require('old-input');

var app = express()

app.use(bodyParser.urlencoded({ extended: false }))

app.use(expressSession({ 
	secret: 'your secret', 
	resave: true,
	saveUninitialized: false
}));

app.use(oldInput);

On POST requests, old-input will automatically save the req.body POST data. If the POST fails validation and you need to redirect the user back to the same form page, old-input will make the previous POST data available to you in the next GET request.

Usage

app.post('/signup', function(req, res) {
	// req.body POST data validation fails ...
	// redirect back to the signup page
	res.redirect('/signup');
});
app.get('/signup', function(req, res) {
	// req.oldInput will contain the POST data submitted
	// by the user in the previous POST request.
	res.render('signup', { 
		oldInput: req.oldInput
	});
});
<!-- signup.ejs -->
<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Sign up page</title>
	</head>
	<body>
		<form action="" method="post">
			<input type="text" name="username" value="<%= oldInput.value('username') %>" />
			
			<input type="password" name="password" value="<%= oldInput.value('password') %>" />
			
			<input type="password" name="passwordConfirmation" value="<%= oldInput.value('passwordConfirmation') %>" />
			
			<input type="submit" value="Sign up">
		</form>
	</body>
</html>

Associating Error Messages with Input Fields

You can optionally associate error messages with previous POST input field. This makes it easy to retrieve and display individual error messages next to the form fields that failed validation.

app.post('/signup', function(req, res) {
	var email = req.body.email;
	
	// ... email validation fails
	
	req.oldInput.setError('email', 'Please enter a valid email address.');
	
	res.redirect('/signup');
});
<!-- signup.ejs -->

... 

<% if ( oldInput.error('email') ) { %>
	<strong><span class='label label-danger'><%= oldInput.error('email') %></span></strong>
<% } %>		
		
<input type="text" name="email" value="<%= oldInput.value('email') %>" />
			
...

License

MIT