問題タブ [hugsql]
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.
sql - 間違った数の結果を返す場合、hugsql クエリ関数にエラーをスローさせるように強制します。
Clojure と hugsql を使用します。クエリをそのように定義します。
を使用すると、名前空間def-db-fns
に関数が作成されます。query-should-return-one-but-returns-multiple
ただし、 に複数の行がある場合some_table
、この関数は単純に任意の行を返し、エラーを通知しません。
:one
データベースが複数の結果を返した場合、例外をスローするように定義されたクエリ関数を強制するにはどうすればよいですか?
database - Clojure/Hugsql で nil パラメータを処理する
Postgresql dbにアクセスするためにClojureでHugsqlを使用しています。私のデータベース テーブルのいくつかにはオプションの列があります。簡単な例として、address1、address2、city など、さまざまな住所列を持つ「users」テーブルを考えてみます。
「更新」の Hugsql クエリ仕様を作成するとき、渡すマップにどの値が存在するかわかりません。したがって、クエリを作成すると、次のようになります。
ただし、ユーザーマップを渡します
その後、例外がスローされます。私はそれが次のようなものを作成することを期待しています
私は Hugsql のソースを見てきました - それは私が回避できない例外をスローする (validate-parameters) 関数を呼び出します。明らかな何かが欠けていると確信しています。これは珍しい要件のようには見えません。オプションの列のすべての可能な組み合わせに対して個別の SQL クエリ仕様を記述したくないことは確かです。
不足しているパラメーターを処理する方法はありますか? オプションの列を持つことでデータベースを悪用していますか?
postgresql - HugSQL でカスタム関数を使用する
macOS 10.12.6 で PostgreSQL バージョン 10 を使用しており、HugSQL にアクセスできるクエリでカスタム plpgsql 関数を使用したいと考えています。次の ansatz は正しく機能します。
HugSQL では複数行の SQL ステートメントを記述でき、 の関数定義を含めることができるため、これは機能しますhelper()
。
ただし、クエリを実行するたびに関数を再定義しているため、実際にそうするのが効率的かどうかは疑問ですdo-something!
。関数定義を入力ファイルの先頭に配置しようとしましたが、コンパイラ例外が発生するだけでした。
質問:これに対する最善の方法は何ですか?
clojure - すべてのキーと値のペアに一致
元のクエリ:
任意のキーと値のペアを渡して、一致する結果を取得したいと考えています。例えば:
(select*-list db-spec {:name "Fruit" :type "Foo"})
結果は次のようになります。
これを達成するためのいくつかの醜い方法を考えることができますが、これを行うための良い方法を見落としている可能性があります。
testing - テスト エラー: :id? の使用方法
luminus
、h2
、 でhugsql
初めてこれをやろうとしていますclojure
。
このinsert
ステートメントは、データベースに接続された SQL クライアントに入力すると正常にh2
機能しますが、コードでは失敗します。WHERE id = :id
クエリの句に関係しているようですが、get-assessor
これを行う方法が見つかりません。
ファイル内./resources/sql/queries.sql
ファイル内:./test/db/core.clj
返される (切り捨てられた) メッセージは次のとおりです。
これを修正する方法は?
postgresql - YesQL/pgsql "パラメータ $1 のデータ型を特定できませんでした"
NULL
特定の検索とインデックスを返すためのクエリを再利用しようとしています(基本的に、ここで説明したアイデアを実装していますhttp://dev.solita.fi/2015/12/29/SQL-in-applications.html )。ただし、パラメーターERROR: could not determine data type of parameter $1
で関数本体を使用しようとすると、いつでも取得でき[]
ます。
クロジュアはこちら
ここにSQLがあります
clojure - Midje で HugSQL によって生成されたデータベース関数をモックできません
Conman ヘルパー ライブラリを使用して、HugSQL テンプレートから生成されたデータベース アクセス関数をモックするのに問題があります。これらの関数は、実行時に次のように定義されます。
(conman/bind-connection *db* file)
私の場合、このサービス関数の単体テストを行っています。
db/create-user!
関数は Conman によって生成されます。ただし、この Midje テストでその関数をモックアウトしようとすると、次のエラー メッセージが表示されます。
動的に作成されモック化された関数をサービスとテストの両方からまったく同じように参照していますが、midje はそれを同じ関数として認識しません。また、var( #'musician.user.db/create-user!
) を介して関数を参照し、サービスとテストの両方からのフル パスを使用しようとしましmusician.user.db/create-user!
たが、どちらも機能しませんでした。サービス コードは、REST API と REPL からテストすると機能しますが、このテストをセットアップできません。
問題は、実行前にわからないため、midje が関数をモックできないことのようです。これは関数を正しく参照するだけの問題ですか、それとも Midje でこれらの関数をモックアウトすることはできませんか?
clojure - Luminus (Clojure) で Parameter Mismatch エラーが表示されるのはなぜですか?
編集(固定)...
Luminus ゲストブック チュートリアルに従っている場合、またはその一部を調整している場合、 のようなエラーが発生しParameter Mismatch: :name parameter data not found.
、使用するパラメーターに関係なく、エラーが解消されない場合があります。存在しない関数を呼び出そうとしていて、Conman/HugSQL がそれをどう処理したらよいかわからないことに気付くかもしれません。
私の質問に対する答えは、以下のセクションにあります。
コードの関連セクションはmyapp.routes.home/create-user!
以下のコードは正しくありませんでした:
以下のように変更して修正しました。
そのため、間違った数の引数を db/create-user に渡していたことが判明しました! そして、Conman はクエリを呼び出す方法を知らなかったようです。
また、移行のいくつかの点をずさんな方法で修正しました - 発生した移行を編集することです。古い移行ファイルと query.sql ファイルを変更しても、Conman は気付かないように見えることに気付きました。query.sql が DB API を反映していないことがわかった場合 (そのため、id フィールドを自動インクリメントに設定しても ID パラメータに関するメッセージが引き続き表示される場合は、Conman に DB API を再生成させる必要があります。
これは、次のように REPL で実行できます。
以下元記事
Luminus ゲストブック チュートリアルに多かれ少なかれ基づいてまとめている本当に単純なアプリで、 http://localhost:3000/userscreate-user!
でフォームをテストしようとしています。フォームを送信するたびに、 It's not specific to のバリエーションが表示されます。私が送信するパラメータが何であれ、取得するか、同様のものを取得します。Parameter Mismatch: :username parameter data not found.
:username
:first_name parameter data not found.
私は実行しましたprintln
がmyapp.routes.home/create-user!
、その時点まですべてのパラメーターがそこにあるように見えることを知っています。それをさらに追跡する方法がわかりません。ここからのデバッグに関するアドバイスをいただければ幸いです。また、誰かが私が間違っていることを見つけた場合、それは非常に役に立ちます。
スタックトレース:
sql - HugSQL エラー: 列 "date_answer" は日付型ですが、式は文字型が異なりますか?
clojure hugSQL
データベースにデータを挿入するために使用していPostgreSQL
ます。tuple
: * パラメータを使用して複数の行を回答テーブルに挿入しようとしています。日付を渡すと、次のエラーが発生します。
HugSQL によって作成されたサンプル SQL クエリ:
ターミナルを使用して挿入すると同じクエリが正常に機能するため、文字列の形式は問題ないようです。:date_answer::date のようなことができるように、:tuple* パラメータ内の個々のフィールドを指定する方法はありますか?
これは私の HugSQL クエリです。
INSERT INTO 回答 (a、b、c、d、date_answer) 値 :tuple*:answers