更改中间件中的服务器选项

问题描述

在Fastify中,我可以在创建实例时指定实例选项,例如

const fastify = require('fastify')({logger:true,disableRequestLogging: false});

是否可以在向实例注册的中间件中执行此操作?

例如如果我做类似的事情

fastify.register(myPlugin);

并将fastify的实例传递给myPlugin-例如,我可以在中间件中更改其disableRequestLogging的值吗?

解决方法

router是依靠disableRequestLogging打开/关闭日志记录for the requestlater 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函数之类的闪避行为。即使您可以这样做,也可能会钻研未定义/未测试的行为。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...