我是Yesod的新手,想知道如何列出表用户的所有用户。使用的数据库是sqlite。这是函数
getAllUsersR :: Handler Html
getAllUsersR = do "getAllUsersR not implemented yet!"
这是表用户
CREATE TABLE "user"("id" INTEGER PRIMARY KEY,"ident" VARCHAR NOT NULL,
"password" VARCHAR NULL,CONSTRAINT "unique_user" UNIQUE ("ident"))
答案 0 :(得分:1)
要阅读经过身份验证的用户,您可以写:
getUserProfileR :: Handler RepHtml
getUserProfileR = do
userId <- requireAuthId
Entity _ userData <- runDB $ selectFirst [UserProfileUser ==. userId] [] >>= return.fromJust
defaultLayout $ do
setTitle "User profile"
$(widgetFile "userprofile")
列出所有内容,删除过滤器,使用select
代替selectFirst
并在(小部件上)写一些像
<h1>User list</h1>
<table>
<tr>
<th>Name
<th>Mail
<th>...
$forall (Entity _ userData) <- userList
<tr>
<td>#{userProfileName userData}
<td>#{userProfileMail userData}
<td>...
(请原谅我没有写完整且经过测试的解决方案,但我这里没有开发沙箱)
修改强>
完整且经过测试的示例。 (你需要yesod-platform和yesod-bin)
$ ghc-pkg list | grep yesod-[0-9]
yesod-1.2.2.1
$ yesod init
$ cd userList
为简单起见,编辑“Handler / Home.hs”文件并添加
getUserListR :: Handler Html
getUserListR = do
users <- runDB $ selectList [] []
defaultLayout $ do
setTitle "Public user list!"
[whamlet|
<h1>User list</h1>
<table>
<tr>
<th>Mail
$forall (Entity _ userData) <- users
<tr>
<td>#{userIdent userData}
|]
将下一行添加到“config / routes”
/userlist UserListR GET
测试
$ cabal install
$ yesod devel
输入一些用户登录并登出
http://site:port/auth/login
(do login)
http://site:port/auth/logout
列出
用户http://site:port/userlist
)