yesod-sqlite 模板中的 "import Database.Persist as X hiding (get)" 如何工作

How does "import Database.Persist as X hiding (get)" from the yesod-sqlite template works

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

这是我的代码:

[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 中的那一行在做什么?

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

如果我理解正确,你只想导入 get 合格的,其他所有不合格的,你可以使用:

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