Socket
Socket
Sign inDemoInstall

express-as-promised

Package Overview
Dependencies
63
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    express-as-promised

This is simply the Express we all know and love promisified.


Version published
Maintainers
1
Install size
76.4 kB
Created

Readme

Source

Express as promised Build Status

This is simply the Express we all know and love with a few enhancements to support returning various values including promises.

So instead of:

app.get('/', function(request, response) {
  return quote.fetch().then(function(quote) {
    response.send(quote);
  });
});

We can simply just return the promise:

app.get('/', function() {
  return quote.fetch();
});

Both will result in something like:

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 87
Date: Sat, 12 Jul 2014 14:40:14 GMT
Connection: keep-alive

{quote: "The true measure of a man is how he treats somebody that can do him no good."}

Returning values

You can return strings and objects or their promised equivalent.

Promises

app.get('/', function() {
  var promise = bluebird.resolve('Hello world');
  return promise;
});
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 11
Date: Sat, 12 Jul 2014 14:40:14 GMT
Connection: keep-alive

Hello world

Strings

app.get('/', function( {
  return 'Hello world';
})
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 11
Date: Sat, 12 Jul 2014 14:40:14 GMT
Connection: keep-alive

Hello world

Errors and production

If your callback throws or returns an error a stack trace will be sent, for example:

app.get('/', function() {
  throw new Error('Something went wrong.');
});
HTTP/1.1 500 Internal Server Error
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 1059
Date: Sat, 12 Jul 2014 14:41:56 GMT
Connection: keep-alive

Error: Something went wrong
    at /Users/michael/Projects/express-as-promised/tests.js:5:9
    at /Users/michael/Projects/express-as-promised/main.js:13:19
    at Object._callback [as handle] (/Users/michael/Projects/express-as-promised/main.js:29:9)
    at next_layer (/Users/michael/Projects/express-as-promised/node_modules/express/lib/router/route.js:113:13)
    at Route.dispatch (/Users/michael/Projects/express-as-promised/node_modules/express/lib/router/route.js:117:5)
    at /Users/michael/Projects/express-as-promised/node_modules/express/lib/router/index.js:222:24
    at Function.proto.process_params (/Users/michael/Projects/express-as-promised/node_modules/express/lib/router/index.js:288:12)
    at next (/Users/michael/Projects/express-as-promised/node_modules/express/lib/router/index.js:216:19)
    at Layer.expressInit [as handle] (/Users/michael/Projects/express-as-promised/node_modules/express/lib/middleware/init.js:23:5)
    at trim_prefix (/Users/michael/Projects/express-as-promised/node_modules/express/lib/router/index.js:263:17)

Turning off errors in production

Unless NODE_ENV is set to production, then you'll just get:

HTTP/1.1 500 Internal Server Error
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 20
Date: Sat, 12 Jul 2014 14:45:51 GMT
Connection: keep-alive

Interal Server Error

Custom status codes

You can still use a custom status code when required:

app.get('/', function(req, res) {
  res.status(403);
  return 'Not allowed';
});
HTTP/1.1 403 Forbidden
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 11
Date: Sun, 13 Jul 2014 05:17:03 GMT
Connection: keep-alive

Not allowed

Can be used just like Express

And everything you're doing right now with Express, should just work.

app.get('/', function(req, res, next) {
  res.status(403);
  next();
}, function(req, res) {
  res.send('Hello world');
});

or even:

app.get('/', function(req, res, next) {
  res.status(403);
  next();
}, function(req, res) {
  return 'Hello world';
});

Tests

Just simply run npm test

FAQs

Last updated on 18 Sep 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc