我正在使用 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/