有没有办法在没有任何过滤器的情况下选择List或在Persistent Haskell中选择选项?

Wad*_*ing 4 haskell yesod

美好的一天.

我通过写一个小项目来学习Yesod几周(我对Haskell很新).我使用MongoDB作为数据库并通过persistent-mongoDB访问它.当我想运行没有任何条件或排序的查询时,例如

IN MONGODB SHELL
> db.comments.find();
Run Code Online (Sandbox Code Playgroud)

我至少在Yesod Book中找不到正确的方法.

我试着写一个相同的解决方法.

IN YESOD REPL
*Application> db $ selectList [CommentContent !=. ""] []
Run Code Online (Sandbox Code Playgroud)

但它很糟糕......

transact-sql查询中的相同问题.例如

IN YESOD REPL
*Application> db $ count [CommentContent !=. "" ]
Run Code Online (Sandbox Code Playgroud)

jos*_*uan 6

写下你想要的类型

myData :: [Entity YOUR_ENTITY_HERE] <- selectList [] []
Run Code Online (Sandbox Code Playgroud)

(我ScopedTypeVariables在这里使用但如果类型可以用其他方式推断则不需要)

  • 允许编译器推断`Entity`类型的另一种方法是指定`Filter`或`SelectOpt`的类型(例如`users < - runDB $ selectList([] :: [Filter User])[] `),这在Persistent/Yesod代码库中很常见.我个人喜欢@ josejuan的方式. (3认同)