問題タブ [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.

0 投票する
1 に答える
415 参照

sql - 間違った数の結果を返す場合、hugsql クエリ関数にエラーをスローさせるように強制します。

Clojure と hugsql を使用します。クエリをそのように定義します。

を使用すると、名前空間def-db-fnsに関数が作成されます。query-should-return-one-but-returns-multiple

ただし、 に複数の行がある場合some_table、この関数は単純に任意の行を返し、エラーを通知しません。

:oneデータベースが複数の結果を返した場合、例外をスローするように定義されたクエリ関数を強制するにはどうすればよいですか?

0 投票する
1 に答える
1371 参照

database - Clojure/Hugsql で nil パラメータを処理する

Postgresql dbにアクセスするためにClojureでHugsqlを使用しています。私のデータベース テーブルのいくつかにはオプションの列があります。簡単な例として、address1、address2、city など、さまざまな住所列を持つ「users」テーブルを考えてみます。

「更新」の Hugsql クエリ仕様を作成するとき、渡すマップにどの値が存在するかわかりません。したがって、クエリを作成すると、次のようになります。

ただし、ユーザーマップを渡します

その後、例外がスローされます。私はそれが次のようなものを作成することを期待しています

私は Hugsql のソースを見てきました - それは私が回避できない例外をスローする (validate-parameters) 関数を呼び出します。明らかな何かが欠けていると確信しています。これは珍しい要件のようには見えません。オプションの列のすべての可能な組み合わせに対して個別の SQL クエリ仕様を記述したくないことは確かです。

不足しているパラメーターを処理する方法はありますか? オプションの列を持つことでデータベースを悪用していますか?

0 投票する
1 に答える
102 参照

postgresql - HugSQL でカスタム関数を使用する

macOS 10.12.6 で PostgreSQL バージョン 10 を使用しており、HugSQL にアクセスできるクエリでカスタム plpgsql 関数を使用したいと考えています。次の ansatz は正しく機能します。

HugSQL では複数行の SQL ステートメントを記述でき、 の関数定義を含めることができるため、これは機能しますhelper()

ただし、クエリを実行するたびに関数を再定義しているため、実際にそうするのが効率的かどうかは疑問ですdo-something!。関数定義を入力ファイルの先頭に配置しようとしましたが、コンパイラ例外が発生するだけでした。

質問:これに対する最善の方法は何ですか?

0 投票する
2 に答える
109 参照

clojure - すべてのキーと値のペアに一致

元のクエリ:

任意のキーと値のペアを渡して、一致する結果を取得したいと考えています。例えば:

(select*-list db-spec {:name "Fruit" :type "Foo"})

結果は次のようになります。

これを達成するためのいくつかの醜い方法を考えることができますが、これを行うための良い方法を見落としている可能性があります。

0 投票する
1 に答える
302 参照

testing - テスト エラー: :id? の使用方法

luminush2、 でhugsql初めてこれをやろうとしていますclojure

このinsertステートメントは、データベースに接続された SQL クライアントに入力すると正常にh2機能しますが、コードでは失敗します。WHERE id = :idクエリの句に関係しているようですが、get-assessorこれを行う方法が見つかりません。

ファイル内./resources/sql/queries.sql

ファイル内:./test/db/core.clj

返される (切り捨てられた) メッセージは次のとおりです。

これを修正する方法は?

0 投票する
1 に答える
1579 参照

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があります

0 投票する
0 に答える
138 参照

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 でこれらの関数をモックアウトすることはできませんか?

0 投票する
2 に答える
391 参照

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.

私が見るエラーページ

展開された params セクションは次のとおりです。 私が送信していると言うパラメータ

私は実行しましたprintlnmyapp.routes.home/create-user!、その時点まですべてのパラメーターがそこにあるように見えることを知っています。それをさらに追跡する方法がわかりません。ここからのデバッグに関するアドバイスをいただければ幸いです。また、誰かが私が間違っていることを見つけた場合、それは非常に役に立ちます。

スタックトレース:

0 投票する
1 に答える
374 参照

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