从DB Repository返回Slice,Channel或Custom Iterator?

时间:2016-09-27 07:09:31

标签: go

为Go设计数据库存储库的惯用方法是什么?

我正在使用Couchbase cbgo获取返回读者的项目。我逐个得到每个项目。

我不想将此抽象返回给我的lib的最终用户。

那么最好的方法是什么?

我可以迭代这些项目并将它们附加到Slice。

或者,我可以返回一个频道,然后将每一行推送到频道,以便客户端可以覆盖它。

或者我可以制作自己的迭代器抽象。

其他人在这种情况下做了什么?

我不需要将结果作为切片,因为数据只是通过管道输送到其他模块。

1 个答案:

答案 0 :(得分:0)

地图

我学到了更多here

  • 首先,使用数据库处理程序生成一个结构。
  • 第二,使接口与dbhandler方法匹配。
  • 第三,将自定义界面指定为地图的键。

现在,无论使用哪种Model结构,您都应该能够使用数据库处理程序的方法

dbHandler := infrastructure.NewSqliteHandler("/var/tmp/production.sqlite")

handlers := make(map[string] interfaces.DbHandler)
handlers["DbUserRepo"] = dbHandler
handlers["DbCustomerRepo"] = dbHandler
handlers["DbItemRepo"] = dbHandler
handlers["DbOrderRepo"] = dbHandler