duanlao6573 2019-02-03 04:28
浏览 19

眼镜蛇应用程序应将* sqlx.DB对象保存在哪里?

I have a cobra project which accesses database using sqlx package, and the command has sub-commands. The cobra related code is in the cmd folder/subpackage and the DB related code is in the db folder/subpackage.

I would like to have package db to have a factory function

func NewDB() *sqlx.DB

which is called somewhere from the cmd package. But I am not sure where to call it and how to make it available to all sub-commands.

One idea is to have a global variable in the cmd package, and initialize it either in root.go's init() or rootCmd's PersistentPreRun. Is it bad to use global variable in this case?

If I don't use global variable, one possibility is to have the sub-commands call db.NewDB(). Somehow it doesn't feel very nice this way either.

I find it nicer to call db.NewDB() once in cmd package, probably in root.go. But where should I save the DB handle such that sub-commands can use it?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题