在Fastify中,我可以在创建实例时指定实例选项,例如
const fastify = require('fastify')({logger:true, disableRequestLogging: false});
是否可以在向实例注册的中间件中执行此操作?
例如,如果我做了类似的事情
fastify.register(myPlugin);
并且fastify
的实例被传递给myPlugin
——例如,我可以在中间件中更改其disableRequestLogging
值吗?
router
依赖于disableRequestLogging
来打开/关闭请求和稍后响应的日志记录。
if (disableRequestLogging === false) {
childLogger.info({ req: request }, 'incoming request')
}
路由器确实提供了允许更改disableRequestLogging
的setup
功能。您可以在此处看到fastify.js
在初始化后期使用router.setup()
来应用一些新值。
问题是fastify没有提供对router
的访问,作为其公共API的一部分。只有fastify.get
/.post
/.route
等功能允许访问路由器的特定组件。
除了修改来源,我看不出有什么办法。由于严格变量的作用域方式,甚至不像在中对函数进行onkeypatch那样狡猾。即使你能做到这一点,它也将深入研究未定义/未经测试的行为。