query.js 782 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * Module dependencies.
  3. */
  4. var qs = require('qs');
  5. var parseUrl = require('parseurl');
  6. /**
  7. * Query:
  8. *
  9. * Automatically parse the query-string when available,
  10. * populating the `req.query` object using
  11. * [qs](https://github.com/visionmedia/node-querystring).
  12. *
  13. * Examples:
  14. *
  15. * .use(connect.query())
  16. * .use(function(req, res){
  17. * res.end(JSON.stringify(req.query));
  18. * });
  19. *
  20. * The `options` passed are provided to qs.parse function.
  21. *
  22. * @param {Object} options
  23. * @return {Function}
  24. * @api public
  25. */
  26. module.exports = function query(options){
  27. return function query(req, res, next){
  28. if (!req.query) {
  29. req.query = ~req.url.indexOf('?')
  30. ? qs.parse(parseUrl(req).query, options)
  31. : {};
  32. }
  33. next();
  34. };
  35. };