问题:如何从数据库中获取可能的persistint64(也许是primalykey)
从内部小村庄

假设我有一个主页。
如果一个人访问我的主页登录。
该人的名字将受到欢迎,并可以选择注销。
如果一个人访问我未登录的主页。
该人将被要求登录。

MUID可能是persistint64
我想在小村庄代码中获取用户的记录,因为
如果有人访问未登录的主页,将导致错误
如果我们试图用什么而不是persistint64获取记录

因此,我只想获取用户ID aka的记录(来自MUID)
当Muid不一

getHomeR :: Handler Html
getHomeR = do
    muid <- maybeAuthId
    defaultLayout $ do
        [whamlet|
            <p>Welcome!
        $maybe _ <- muid
            <p>
                $with user <- fromJust (runDB $ get (fromJust muid)) 'does not work'        
                Welcome #{userIdent user}<br>
                <a href=@{AuthR LogoutR}>Logout
        $nothing
            <p>
                <a href=@{AuthR LoginR}>Go to the login page
|]
有帮助吗?

解决方案

一种方法是(以下说明):

getHomeR :: Handler Html
getHomeR = do
    muid <- maybeAuthId
    m <- case muid of
        Nothing -> return Nothing
        Just i  -> runDB $ get i

    defaultLayout $ do
        [whamlet|
            <p>Welcome!
        $maybe user <- m
            <p>        
                Welcome #{userIdent user}<br>
                <a href=@{AuthR LogoutR}>Logout
        $nothing
            <p>
                <a href=@{AuthR LoginR}>Go to the login page
|]

这样,我们将可能的用户从M中删除,然后在我们的模板文件中解析。注意 $maybe user <- m, ,这个(粗略)转化为

case m of
    Just user -> do
        -- Do stuff with user, which is now of type User (and not Maybe User)
    Nothing -> do
        --Do stuff if m was nothing

因此,最好不要通配符 $maybe _ <- muid

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top