"如何将Database.Persist导入为X隐藏(获取)"来自yesod-sqlite模板的工作原理

时间:2017-05-30 14:49:53

标签: haskell yesod hspec haskell-persistent

我正在使用yesod-sqlite模板并尝试在测试中使用get中的Database.Persist函数。

这是我的代码:

[Entity _ task] <- runDB $ selectList [TaskName ==. name] []
...
user <- runDB $ X.get (taskUserId task)

我得到的错误:

my_project/test/Handler/TaskSpec.hs:47:29: error:
Not in scope: ‘X.get’
No module named ‘X’ is imported.

TestImport.hs文件中,我看到了这一行:

import Database.Persist      as X hiding (get)

根据我的理解,它应该隐藏HSpec模块中的get函数,因此我可以使用X.get进行数据库检索。我还尝试使用Database.Persist.getget,结果相同。

所以我怀疑:TestImport.hs中的那一行是做什么的?

1 个答案:

答案 0 :(得分:4)

导入行正在导入Database.Persist模块中的所有内容,但 get除外,可选择限定。

如果我理解正确并且您想要导入 get限定,并且其他所有内容都不合格,您可以使用:

import Database.Persist hiding (get)
import qualified Database.Persist as X (get)