Frage

Die Frage: Wie bekomme ich einen Datensatz aus der Datenbank mit einem vielleicht persistint64 (vielleicht PrimaryKey)
von innen Hamlet

Nehmen wir an, ich habe eine Homepage.
Wenn eine Person meine Homepage besucht, die angemeldet ist.
Die Person wird mit ihrem Namen begrüßt und hat die Möglichkeit, sich anzumelden.
Wenn eine Person meine Homepage besucht, die nicht angemeldet ist.
Die Person wird gebeten, sich anzumelden.

Muid ist ein vielleicht persistint64
Ich möchte den Datensatz des Benutzers im Hamlet -Code erhalten, weil
Wenn jemand die Homepage besucht, die nicht darin angemeldet ist
Wenn wir versuchen, eine Platte mit einem Nichts anstelle eines persistint64 abzurufen

Daher möchte ich nur einen Datensatz von der Benutzer -AKA (von Just Muid) abrufen
Wenn Muid nicht nichts ist und das im Codeblock von $ ist vielleicht _ <- 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
|]
War es hilfreich?

Lösung

Eine Möglichkeit, dies zu tun, wäre (Erläuterung unten):

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

Auf diese Weise machen wir einen vielleicht aus M aus mutigen Benutzern und analysieren das in unserer Vorlagendatei. Beachten Sie die $maybe user <- m, Dies bedeutet (ungefähr)

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

Es ist also besser, Ihre nicht zu walten $maybe _ <- muid

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top