Question

La question: comment puis-je obtenir un enregistrement de la base de données compte tenu d'un peut-être persistint64 (peut-être primaire)
de l'intérieur du hameau

Disons que j'ai une page d'accueil.
Si une personne visite ma page d'accueil qui est connectée.
La personne sera accueillie avec son nom et aura la possibilité de se déconnecter.
Si une personne visite ma page d'accueil qui n'est pas connectée.
La personne sera invitée à se connecter.

Muid est peut-être un persistint64
Je veux obtenir l'enregistrement de l'utilisateur dans le code du hameau parce que
Si quelqu'un visite la page d'accueil qui n'est pas connectée, cela provoquera une erreur
Si nous essayons de récupérer un record avec un rien au lieu d'un persistint64

Donc je veux seulement aller chercher un enregistrement par l'utilisateur AKA (From thost Muid)
Quand Muid n'est pas rien et c'est dans le bloc de code de $ peut-être _ <- 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
|]
Était-ce utile?

La solution

Une façon de le faire serait (explication ci-dessous):

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

De cette façon, nous faisons peut-être un utilisateur de m et analysons cela dans notre fichier de modèle. Remarquez le $maybe user <- m, cela se traduit (à peu près) par

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

Il vaut donc mieux ne pas $maybe _ <- muid

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top