如何从snaplet查询数据库

时间:2016-09-16 08:41:40

标签: haskell haskell-snap-framework

我的申请被定义为:

data App = App { _api :: Snaplet Api, _db :: Snaplet Postgres }

makeLenses ''App

instance HasPostgres (Handler b App) where
    getPostgresState = with db get
    setLocalPostgresState s = local (set (db . snapletValue) s)

其中_api是我创建的snaplet。它被定义为:

data Api = Api

我现在想在query_ snaplet中使用Api函数。我可以这样做的唯一方法是将Api定义为data Api = Api { _db :: Snaplet Postgres },但似乎这会将postgres snaplet初始化两次,我认为这是正确的。我不确定如何从父母那里得到_db'} App也是。

我在正确的道路上吗?在Api snaplet中访问数据库的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

为什么要创建此for snaplet?您是否在两个或更多网络应用中重用Api中的内容?如果没有,我建议不要使用snaplet。然后一切都会完美。 Api会有一个Handler App App个实例,你可以按照自己的方式继续。