【问题标题】:Is there something like runDB but outside the Handler monad?有没有类似 runDB 但在 Handler monad 之外的东西?
【发布时间】:2014-01-13 17:35:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: haskell websocket yesod


    【解决方案1】:

    可能最好的运行方式是脚手架站点runs the migration code

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

    【讨论】:

    • 谢谢迈克尔,这正是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2011-04-07
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多