/jsend

Utilities to assist with sending and handling jsend responses

Primary LanguageJavaScriptMIT LicenseMIT

jsend

Utilities to assist with sending and handling jsend responses.

@TODO: document forward and fromArguments methods

@TODO: middleware

NOTE: based from Prestaul/jsend but added ability to hide errors (sent to console instead) with code: 4485d9 in json response for tracking. Like..

var jsend = require('jsend')({hideErrors: true});

jsend.build(err, results);

Oh! still needs a little fine tuning so user beware! Also using build() as it's shorter then typing out fromArguments() each time.

Response validation

By default jsend.isValid validates that all required properties exist.

var jsend = require('jsend');

// Returns true
jsend.isValid({
	status: 'success',
	data: { foo:'bar' }
});

// Returns false
jsend.isValid({
	status: 'success'
});

// Returns true
jsend.isValid({
	status: 'success',
	data: { foo:'bar' },
	junk: 'is ok'
});

Using the strict flag causes jsend.isValid to also validate that extraneous properties do not exist.

var jsend = require('jsend');

// Returns true
jsend.isValid({
	status: 'success',
	data: { foo:'bar' }
});

// Returns false
jsend.isValid({
	status: 'success'
});

// Returns false
jsend.isValid({
	status: 'success',
	data: { foo:'bar' },
	junk: 'is ok'
});

Creating a jsend response

getData(id, function(err, data) {
	res.json(jsend.fromArguments(err, data));
});

Forwarding jsend responses to node-style callbacks

jsend.forward(json, function(err, data) {

});

Http middleware

expressApp.use(jsend.middleware);

expressApp.get('/', function(req, res) {
	loadData(req.params.someParam, function(err, data) {
		res.jsend(err, data);
	});
});

same as:

expressApp.use(jsend.middleware);

expressApp.get('/', function(req, res) {
	loadData(req.params.someParam, res.jsend);
});

same but adds param validation:

expressApp.use(jsend.middleware);

expressApp.get('/', function(req, res) {
	if(!req.params.someParam)
		return res.fail({ validation:['someParam is required'] });

	loadData(req.params.someParam, res.jsend);
});

same:

expressApp.use(jsend.middleware);

expressApp.get('/', function(req, res) {
	if(!req.params.someParam)
		return res.fail({ validation:['someParam is required'] });

	loadData(req.params.someParam, function(err, data) {
		if(err) return res.error(err);
		res.success(data);
	});
});