我正在使用 gin框架。我在主函数中打开sqlite数据库就像这样
...
r.GET("/", GetHomePage)
r.GET("/signin", GetSignIn)
r.POST("/signin", PostSignIn)
...
我在主要功能中有这些路由器处理程序。
PostSignin(c *gin.Context)
如何通过路由器处理程序func // @flow
import { ApolloClient, createNetworkInterface } from 'react-apollo';
import fetch from 'isomorphic-fetch';
let apolloClient = null;
// Polyfill fetch() on the server (used by apollo-client)
if (!process.browser) {
global.fetch = fetch;
}
function create() {
return new ApolloClient({
ssrMode: !process.browser, // Disables forceFetch on the server (so queries are only run once)
networkInterface: createNetworkInterface({
uri: 'https://api.graph.cool/simple/v1/cixmkt2ul01q00122mksg82pn', // Server URL (must be absolute)
opts: {
// Additional fetch() options like `credentials` or `headers`
credentials: 'same-origin',
},
}),
});
}
传递该db值?
这样我每次都可以避免在函数中打开和关闭数据库。
更新:我使用go-sqlite3包。
谢谢!
答案 0 :(得分:2)
假设您已在db
中初始化了sql客户端,然后,您可以将其传递到不同的路径
r.GET("/", GetHomePageHandler(&db))
在你的GetHomePageHandler中:
func GetHomePageHandler(sqldb *SQLiteConn) func (*gin.Context) {
return func (*gin.Context) {
. . .
}
}
其中*SQLiteConn
是您的sql db实例的类型。我不知道你目前使用的是哪个包,所以这只是一个例子。
您还可以找到更优雅的解决方法in this answer,