扩展nodejs请求对象
如何扩展node.js请求对象并向其添加自定义方法和属性? 我需要能够从节点的请求访问this
,虽然因为我需要的URL等。
传递给http.createServer
callback的请求对象是一个http.IncomingMessage
对象。 为了增加请求对象,你可以添加方法到http.IncomingMessage.prototype
。
var http = require('http'); http.IncomingMessage.prototype.userAgent = function () { return this.headers['user-agent']; }
要添加访问者属性:
Object.defineProperty(http.IncomingMessage.prototype, 'userAgent', { get: function () { return this.headers['user-agent']; } }
如果您的现有对象在构造函数体中定义了其方法,则可以使用delegation:
function AugmentedRequest() { this.userAgent = function () {} } AugmentedRequest.call(request); //request now has a userAgent method
另一种不涉及增加request
对象的方法是使用合成。
var extendedRequest = { get userAgent() { this.request.headers['user-agent']; } } createServerCallback(function (req, res) { var request = Object.create(extendedRequest); request.request = req; });
这种技术在koa中被广泛用来包装Node对象。
- 大多数中间件(如compress)不再与Express捆绑在一起
- embedded式mongoose文档主详细callback序列
- 小parsingID迁移到正常的MongoDB的ObjectIDs
- MEAN堆栈如何处理login和redirect
- 将variables从Jquery传递给Node来运行git命令
- Babel + Typescript + NPM模块+ Webpack
- 在循环中使用async / await
- 访问由Node的Expressparsing的JSONstringbodyParser()
- 当modelObject从数据库本身获得时,modelObject.save()是否只更新现有的数据库文档?