问题描述
在Fastify中,我可以在创建实例时指定实例选项,例如
const fastify = require('fastify')({logger:true,disableRequestLogging: false});
是否可以在向实例注册的中间件中执行此操作?
例如如果我做类似的事情
fastify.register(myPlugin);
并将fastify
的实例传递给myPlugin
-例如,我可以在中间件中更改其disableRequestLogging
的值吗?
解决方法
router
是依靠disableRequestLogging
打开/关闭日志记录for the request和later response的内容。
if (disableRequestLogging === false) {
childLogger.info({ req: request },'incoming request')
}
路由器确实提供了setup
function,可以更改disableRequestLogging
。您可以看到fastify.js
在初始化here to apply some new values的后期使用router.setup()
。
问题在于,fastify无法提供对public API的访问router
。只有fastify.get
/ .post
/ .route
之类的功能允许访问路由器的特定组件。
修改源代码的简短操作,我看不到任何方法。由于固定变量的作用域,甚至没有像onkeypatching函数之类的闪避行为。即使您可以这样做,也可能会钻研未定义/未测试的行为。