Вопрос

Вопрос: как мне получить запись из базы данных с учетом, возможно, Persistint64 (возможно, PrimaryKey)
Изнутри Гамлета

Допустим, у меня есть домашняя страница.
Если человек посетит мою домашнюю страницу, которая вошла в систему.
Человека будет приветствоваться с его именем и имеет возможность выходить из системы.
Если человек посещает мою домашнюю страницу, который не вошел в систему.
Человека будет предложено войти в систему.

Muid - это, возможно, Stristint64
Я хочу получить запись пользователя в коде Гамлета, потому что
Если кто -то посетит домашнюю страницу, которая не входит в нее, вызовет ошибку
Если мы попытаемся принести запись ни с чем вместо Persistint64

Поэтому я хочу получить записи только по идентификации пользователя (From Just Muid)
Когда 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