質問

質問:おそらくpersistint64(多分プライマリキー)が与えられたデータベースからレコードを取得するにはどうすればよいですか
ハムレットの中から

ホームページがあるとしましょう。
人がログインされている私のホームページにアクセスした場合。
その人は彼の名前で歓迎され、ログアウトするオプションがあります。
人がログインされていない私のホームページにアクセスした場合。
その人はログインするように求められます。

Muidはおそらく継続的な64です
ハムレットコード内でユーザーのレコードを取得したい
誰かがログインしていないホームページを訪れた場合、エラーが発生します
persistint64の代わりに何もない状態でレコードを取得しようとする場合

だから私はuserid aka(fromjust 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
|]
役に立ちましたか?

解決

それを行う1つの方法は(以下の説明)です:

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

このようにして、Mayce Mays user out of m of 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