我在这里使用半代码只是为了展示我对代码中发生的事情的意图,而不是让问题复杂化。
我有一个main.go文件调用连接到 mongoDB 数据库的方法:
mStore := store.NewMongoStore()
在NewMongoStore我有client.Connect用于连接数据库的上下文中:
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
现在main.go我以这种方式将商店传递给我的路由器控制器文件:
routes.GenericRoute(router, mStore)
在GenericRoute我得到 mStore 并将其传递给函数处理程序时:
func GenericRoute(router *gin.Engine, mStore store.Store) {
router.POST("/users", controllers.CreateUser(mStore))
}
现在CreateUser我再次创建一个上下文,如下所示,将文档插入 MongoDB:
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
insertedId, err := repo.CreateUser(ctx, newUser{"John", "Doe"})
在这里,我将上下文传递给以createUser插入一个新文档。
正如您在某些部分看到的,我已经通过了上下文,而在某些部分我没有。我真的不知道我应该做什么?使用上下文的正确方法是什么?我应该始终传递上下文还是完全可以创建这样的新上下文而不在方法参数中传递上下文。
这种编码的最佳实践是什么?从性能的角度来看,哪个更好?
www说
紫衣仙女
相关分类