haskell - 是否有类似 runDB 但在 Handler monad 之外的东西?

标签 haskell websocket yesod

我正在使用 Yesod 1.2 开发一个网络应用程序,我正在使用 websockets。对 websocket 发出的请求需要查询我的数据库,并且要进行此查询我知道它们必须在 PersistStore 实例中。据我所知,我不能使用 runDB,因为 websockets 请求处理程序不在 Handler monad 中。相反,为此我可以使用类似于 this 的答案中的代码的东西。问题。

在脚手架站点中进入 PersistStore monad 的最干净的方法是什么?我知道我可以轻松地使用硬编码的连接字符串拍摄 runSqlite 并完成它,但我认为这很丑陋。如果出于任何原因我想更改数据库引擎,我不想修改连接到数据库的每一段代码。

我正在寻找一种方法来使用脚手架站点在连接到数据库时已经为我做的事情,以免重复代码。

最佳答案

可能最好的运行方式与脚手架站点的运行方式相同 runs the migration code :

-- Perform database migration using our application's logging settings.
runLoggingT
    (Database.Persist.runPool dbconf (runMigration migrateAll) p)
    (messageLoggerSource foundation logger)

关于haskell - 是否有类似 runDB 但在 Handler monad 之外的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081504/

相关文章:

python - 如何知道客户端在套接字中断开服务器连接

javascript - 连接到 WebSocket 时如何覆盖 Chrome 中的 Origin header ?

haskell - Yesod javascript格式

haskell - 如何在不终止网站的情况下捕获 Yesod 中的异常?

Haskell:为什么这个 monad 转换是错误的?

haskell - 将 IO [可能是字符串] 过滤为 IO [字符串]

javascript - Websockets 数据困惑

Haskell - 无法将类型 ‘PersistEntityBackend record0’ 与 ‘SqlBackend’ 匹配

list - 在 Haskell 中将分层数据结构转换为平面数据结构

haskell - 我的编译器错误真的与准引用有关,还是更微妙的原因?