,我在golang上写api,遇到了错误。在一个请求服务器返回错误后,sql 数据库已关闭。我想通过上下文传输数据库连接。,main.go,configure_router.go,注册.go,如果我在 /api/register 中发送请求并且用户已经在第一个请求中注册,我会得到,要求:,第一反应:,但是如果我想发送另一个请求,我会得到:,我想通过上下文传输数据库连接。,不要。这不仅是不好的做法,而且实际上是
fasthttp.requestctx
本身在每次请求后关闭数据库。上下文应仅包含请求特定值。全局数据库连接几乎不是特定于请求的。,请参阅 setuservalue
的文档,特别是最后一个段落:,从顶层requesthandler返回后,所有值都会从ctx中删除。此外,在从 ctx 中删除值之前,会在每个实现 io.closer 的值上调用 close 方法。,一个快速修复方法是在闭包中捕获数据库:,