Pergunta

A pergunta: como faço para obter um registro do banco de dados, com um persetInt64 (talvez Primarykey)
De dentro de Hamlet

Digamos que eu tenho uma página inicial.
Se uma pessoa visitar minha página inicial que está conectada.
A pessoa será bem -vinda com seu nome e tem a opção de sair.
Se uma pessoa visitar minha página inicial que não está conectada.
A pessoa será solicitada a fazer login.

muid é um talvez persistint64
Eu quero obter o registro do usuário dentro do código Hamlet porque
Se alguém visitar a página inicial que não está logada, causará um erro
Se tentarmos buscar um recorde com um nada em vez de um persistint64

Então, eu só quero buscar um recorde do UserID AKA (do Just Muid)
Quando Muid não é nada e isso está no bloco de código de $ talvez _ <- 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
|]
Foi útil?

Solução

Uma maneira de fazer isso seria (explicação abaixo):

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
|]

Dessa forma, fazemos um usuário de M de M e analisar isso em nosso arquivo de modelo. Observe o $maybe user <- m, isso (aproximadamente) se traduz em

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

Portanto, é melhor não curar seu seu $maybe _ <- muid

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top