問題タブ [hasql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Hasql のセッションと IO
関数を書きました
これは、Web 要求を受け入れて応答を作成します (必要に応じてデータベースを調べます)。実際に応答を送信するために、ラッパーを作成しました
この関数をWarprunSettings
に渡して、永久にループし、リクエストを処理します。
ただし、接続プールと準備されたステートメントの目的を無効にするすべての要求に対して新しいセッションを作成するため、これは本当に悪いことです。
その逆ではなく、runSettings
内側に電話したいと思います。H.session
ただしrunSettings
、署名がSettings -> Application -> IO ()
あり、中IO
に入るとセッションにアクセスできなくなりました。中に戻る方法はありSession b m r
ますか?
これは、プライベート メールからの質問の再投稿です。
postgresql - Hasql セッションの戻り値変数が特定の型で動かなくなっていますか?
Spock アプリケーションの外部で一度 Postgres に接続しようとしていますが、複数の戻り値の型を持つ Hasql セッション ハンドルを使用できないようです。
私のメイン アプリケーションはかなり単純ですが、コンパイルに失敗します。
printAHasqlString
またはをコメントアウトするprintAccountCount
と、コンパイルされて機能します (どちらも、もう一方なしで実行すると機能します)。
printAccountCount
Int を返すprintAHasqlString
クエリを実行し、Text のクエリを実行します。どちらも結果を出力するだけで、IO ()
.
しかし、同じアプリケーションで両方のクエリを実行しようとするとr
、データ型の型変数Session
がロックされ、2 番目のクエリでコンパイルできなくなります。
エラーメッセージ:
更新されたエラー
以下のヘルプの後、新しいエラーが発生しました。
その型変数を呼び出し間で柔軟に保つにはどうすればよいですか?
完全な (更新された) コード: https://gist.github.com/cschneid/4174addefb254a517f35
servant - :: BasicAuthCheck User 内の :: Hasql.Pool.Pool にアクセスするにはどうすればよいですか?
:: Hasql.Pool.Pool
私は通常、引数としてserve
関数に渡しrun
ますmain :: IO ()
:: BasicAuthCheck User
しかし、認証に使用することを計画し:: Hasql.Pool.Pool
始めて以来:: BasicAuthCheck User
、:: BasicAuthData -> IO (BasicAuthResult User)
.
私の現在の回避策は、:: Hasql.Pool.Pool
内部に別のものを作成し、:: BasicAuthData -> IO (BasicAuthResult User)
それを使用してユーザーを認証することです。
別の接続プールを作成するよりもエレガントな方法はありますか?